我正在尝试将使用 Windows 身份验证的生产数据库(SQL Server 2000)链接到使用混合模式身份验证的测试数据库(SQL Server 2008)。
我已经从这个链接尝试了下面的代码:
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)中。
关于如何链接服务器的任何想法?
非常感谢。:)