代码改变世界

MS SQL 能否修改实例名称

2013-04-28 18:56  潇湘隐者  阅读(4976)  评论(1编辑  收藏  举报

前几天研究了了一下修改数据库名称的方式后,今天突然冒出一个问题,MS SQL的命名实例是否也可以修改呢?例如下图,我在本机上安装了一个命名实例GSP,如果我想将其改为GSPS,能行吗? 如果可以,那么该怎么做呢?

clipboard

该如何下手呢,真的不知道怎么做,毕竟以前都没有做过修改命令实例(当然修改计算机名称是另外一回事),先从网上搜索资料吧,结果,搜索到一堆不相关的资料,其实都不是真正的修改命名实例名称,只是修改计算机名称。不过最后搜索到一点有用的信息http://www.itpub.net/thread-1047040-1-1.html, 不过呢,我按照其操作去实现的时候,发现根本行不通。

修改sysservers脚本
  1.   EXEC sp_configure'allow updates', 1;
  2.  
  3.   RECONFIGURE WITH OVERRIDE;
  4.  
  5.   GO
  6.  
  7.  
  8.   UPDATE master..sysservers SET srvname='A8BEC8491730444\GSPS', dataaccess='A8BEC8491730444\GSPS',
  9.  
  10.            srvnetname='A8BEC8491730444\GSPS'
  11.  
  12.        WHERE srvname ='A8BEC8491730444\GSPS';
  13.  
  14.       
  15.  
  16.   EXEC sp_configure'allow updates', 0;
  17.  
  18.   RECONFIGURE WITH OVERRIDE;
  19.  
  20.   GO

因为sql server 2005 和 sql server 2008 不再支持直接对系统表进行修改,上面语句会报如下错误。

消息 259,级别 16,状态 1,第 2 行

不允许对系统目录进行即席更新。

那么接下来我们来看看修改计算机名称,会给数据库带来什么影响,我把计算机名称从A8BEC8491730444改为Kerry,然后重启机器和服务,执行下面脚本

Code Snippet
  1. USE master;
  2.  
  3. GO
  4.  
  5. IF SERVERPROPERTY('servername') <> @@SERVERNAME
  6.  
  7. BEGIN
  8.  
  9. DECLARE @server sysname;
  10.  
  11. SET @server =@@SERVERNAME;
  12.  
  13. EXEC sp_dropserver@server = @server;
  14.  
  15. SET @server = CAST(SERVERPROPERTY('servername') AS sysname);
  16.  
  17. EXEC sp_addserver@server=@server, @local='LOCAL';
  18.  
  19. END
  20.  
  21. GO

执行完脚本后,我们来看看查询结果

SELECT @@SERVERNAME ,SERVERPROPERTY('servername')
 
SELECT * FROM Sys.SysServers
 

我们重启一下服务.OK,问题已经解决

结论:折腾了大半下午,终于弄清了一个事实,数据库命名实例是不能修改的,不能将GSP改为其它名称,除非你重装MSSMS。不像ORACLE数据库的实例名是可以修改的。但是呢,可以修改计算机名称。