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 に答える