一开始提示,在服务器中找不到在 sys.servers 中找不到服务器 'QPAccountsDBLink',先用select * from sys.servers ,发现只能查到一个服务器名称,后来自己电脑里保存了一些链接脚本,只需改几个地方
-- 变量定义
DECLARE @DBName VARCHAR(32)
DECLARE @DBUser VARCHAR(32)
DECLARE @DBPassword VARCHAR(32)
DECLARE @DBSourceAddr VARCHAR(32)
DECLARE @LinkServerName VARCHAR(32)
-- 设置变量
SET @LinkServerName='QPTreasureDBLink'
SET @DBSourceAddr='(local)'
SET @DBName='QPTreasureDB'
-- 删除连接服务器
IF EXISTS(SELECT SrvName FROM MASTER.DBO.SYSSERVERS WHERE SrvName=@LinkServerName)
BEGIN
EXEC SP_DROPSERVER @LinkServerName,'DropLogins'
END
-- 建立链接服务器
EXEC SP_ADDLINKEDSERVER
@Server=@LinkServerName,
@SrvProduct=@LinkServerName,
@Provider='SQLOLEDB',
@DataSrc=@DBSourceAddr,
@Location='',
@ProvStr='',
@Catalog=null
-- 用户映射
EXEC SP_ADDLINKEDSRVLOGIN @RmtSrvName=@LinkServerName,@Useself='true',@LocalLogin=NULL,@RmtUser=NULL,@RmtPassword=NULL
-- 设置链接服务器
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='RPC OUT',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Data Access',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Collation CompaTible',@OptValue='true'
EXEC SP_SERVEROPTION @Server=@LinkServerName,@OptName='Use Remote Collation',@OptValue='true'
-- 链接服务器状态
EXEC SP_HELPSERVER @LinkServerName
只需要在设置变量那里改改,其他不用动,提示缺少找不到什么服务器就弄什么服务器
-- 设置变量
SET @LinkServerName='QPTreasureDBLink'
SET @DBSourceAddr='(local)'
SET @DBName='QPTreasureDB'
只需把@LinkServerName设置成数据库link名字
@DBName设置成数据库名字
下面是网上通用解决方法
打开SQL Server Management Studio,新建查询:
select * from sys.servers
GO
//这里可得到原来的计算机名称。然后将其记录下来(复制即可)
新建查询:
sp_dropserver [你的SQL服务器名称]
GO
//这里是将原来的名称删除。
新建查询:
sp_addserver [新的SQL服务器名称]
GO
//这里是新建服务器名称
新建查询:
sp_serveroption '新的SQL服务器名称','data access', 'true'
GO