0

我正在尝试将使用 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)中。

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

非常感谢。:)

4

1 回答 1

0

通过一个 SSIS 包设法找到一种解决方法(感谢同事的帮助):

  • 将数据从生产服务器导入到测试服务器到在 SQL2008 数据库中创建的临时表中
  • 执行 MERGE 脚本(在 SQL 任务中),该脚本执行从临时表到要更新的真实表的合并
于 2013-11-02T15:01:18.080 回答