将SQL Server 2008(混合模式)链接到SQL Server 2000(Windows身份验证)

时间:2013-10-02 07:40:22

标签: sql sql-server sql-server-2008 authentication sql-server-2000

我正在尝试将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)的合并。

关于如何链接服务器的任何想法?

非常感谢你。 :)

1 个答案:

答案 0 :(得分:0)

通过SSIS软件包管理解决方法(感谢同事的帮助):

  • 将数据从生产到测试服务器导入到在SQL2008数据库中创建的临时表
  • 执行MERGE脚本(在SQL任务中),该脚本执行从临时表到实际表的更新以进行更新