代码改变世界

SQL Server 复制需要有实际的服务器名称才能连接到服务器

2010-12-27 17:21  潇湘隐者  阅读(5964)  评论(2编辑  收藏  举报

机子由于在捣鼓DAC连接方式时,计算机名被修改了,被改成了kerry,直到最近几天由于计算机改名了,这个潜在的问题(本机数据库只是偶尔那里做实验)终于爆发了:我用连接服务器从其它服务器拷贝数据时报错,错误如下:SQL Server 复制需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP 地址或任何其他备用名称进行连接。请指定实际的服务器名称“xxxx”。 (Replication.Utilities):具体情况如图所示

 

 

 

决方法:从sys.sysservers 查看列 svrname 可以发现不是新的计算机名,问题就出在此处(如图所示)。先用 sp_dropserver 删除服务器,语句:EXEC sp_dropserver '老计算机名'再用 sp_addserver 添加新的服务器,语句:EXEC SP_ADDSERVER '新计算机名','LOCAL'最后重启SQL SERVER 服务,问题解决。

SELECT * FROM sys.sysservers

EXEC SP_DROPSERVER '20091228-1016\GSP';
GO
EXEC SP_ADDSERVER 'KERRY\GSP';
GO

--或用下面代码
IF SERVERPROPERTY('servername') <> @@SERVERNAME
BEGIN
DECLARE @Server SYSNAME
SET @Server = @@SERVERNAME
EXEC SP_DROPSERVER @server = @Server ;
SET @Server = CAST(SERVERPROPERTY('servername') AS SYSNAME)
EXEC SP_ADDSERVER @server = @server, @local = 'LOCAL'
END