【发布时间】:2013-10-08 13:14:47
【问题描述】:
我正在尝试将采用 Windows 身份验证的生产数据库 (SQL Server 2000) 链接到采用混合模式身份验证的测试数据库 (SQL Server 2008)。
我已经尝试过this link下面的代码:
DECLARE @LinkName SYSNAME SET @LinkName = 'PRODUCTIONSERVER'
DECLARE @SrvName SYSNAME SET @SrvName = 'PRODUCTIONSERVER'
DECLARE @LocalLogin SYSNAME SET @LocalLogin = 'sa' --login on test db
DECLARE @RmtLogin SYSNAME SET @RmtLogin = 'DOMAIN\UserName' --win auth login on prod db
DECLARE @RmtPwd SYSNAME SET @RmtPwd = 'password' --win auth password for the login on prod db
IF NOT EXISTS (SELECT * FROM Master..Sysservers WHERE IsRemote = 1 AND SrvName = @LinkName)
BEGIN
EXECUTE sp_addlinkedserver @server = @LinkName,
@srvproduct = '',
@provider = 'SQLOLEDB',
@datasrc = @SrvName
EXECUTE sp_addlinkedsrvlogin @rmtsrvname = @LinkName,
@useself = 'false',
@locallogin = @LocalLogin,
@rmtuser = @RmtLogin,
@rmtpassword = @RmtPwd
END
...链接服务器已成功添加,但是当我尝试如下查询时:
SELECT COUNT(*) FROM PRODUCTIONSERVER.ProdDatabase.dbo.ProdTable
我收到一个错误:
Msg 18456, Level 14, State 1, Line 0
Login failed for user 'DOMAIN\UserName'.
我还尝试使用上述 Windows 身份验证凭据(我的个人登录)登录 prod 数据库,我可以通过。
链接的原因是因为我想测试将实时数据(来自 sql 2000)合并到测试数据库(sql 2008)中。
关于如何链接服务器有什么想法吗?
非常感谢。 :)
【问题讨论】:
标签: sql sql-server sql-server-2008 authentication sql-server-2000