web-dev-qa-db-ja.com

SQL Server 2012からSQL Server 2000サーバーへのリンクサーバー

新しいSQL Server 2012インスタンスがあり、SQL Server 2000からデータベースを移行しています。DB内の一部のストアドプロシージャを移動して、その2000サーバー上の別のデータベースを参照しています。これを処理する最良の方法は何ですか?

リンクサーバーは役に立ちますか?テスト用のリンクを作成できません。 ODBCの使用を推奨する人もいれば、SQL Server 10クライアントドライバー(SQLNCLI10)を使用する人もいます。 SQL Server 10クライアントドライバーを使用する方が良いようですが、SQL Server 2012インスタンスへのインストールに問題はありますか?

6
PatFromCanada

connect item で説明されているように、SQLNCLI10を使用するときは注意してください。

回避策を見つけることができます ここ

まず、そのようなSPを使用しているアプリケーションを2012年から2000年までテストする必要があります。これは、両方のサーバーが配置されている場所と、リンクサーバーを使用して引き出しているデータの量にも依存します。

他の参照データベースを2012に移動できない理由はありますか?

5
Kin Shah

これが私がこれを機能させるために使用したサンプルコードです、これが誰かに役立つことを願っています!リンクサーバーは2000年から2012年に設定されています。

USE master
GO

-- Drop Existing LinkedServer [CARME]:
EXEC sp_dropserver @server=N'CARME', @droplogins='droplogins'
GO

-- Re-create LinkedServer [CARME] by using the ODBC connection:
EXEC sp_addlinkedserver @server = N'CARME', 
                        @srvproduct=N'', 
                        @provider=N'MSDASQL', 
                        @provstr=N'DRIVER={SQL Server};SERVER=CARME;UID=ROSALINDxCARMExREADER;PWD=XXXXXX'
GO

EXEC sp_addlinkedsrvlogin @rmtsrvname=N'CARME', 
                          @useself=N'False', 
                          @locallogin=NULL, 
                          @rmtuser='ROSALINDxCARMExREADER', 
                          @rmtpassword='XXXXXX'
GO

SQL Server 2012からSQL 2000へのリンクサーバーは、ネイティブまたは直接にはサポートされていません。 SQL Server 2012には、ネイティブクライアント、つまりSQLNCLI11の新しいバージョンが付属しており、SQL 2008R2/2008/2005バージョンにのみ接続します。

また、以前のネイティブクライアント(SQLNCLI10など)をインストールしても機能しません。

したがって、SQLNCLI11ではなくMSDASQLプロバイダーを使用して接続したい場合は、 このブログ投稿 を確認して、ソリューションと詳細を取得してください

2
Manoj Pandey

これは私のために働きました:

EXEC master.dbo.sp_addlinkedserver @server = N'TestConnect'
    , @srvproduct=N''
    , @provider=N'MSDASQL'
    , @provstr=N'DRIVER={SQL Server};SERVER=TestConnect;Trusted_Connection=no;'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TestConnect'
    , @useself=N'False'
    , @locallogin=NULL,@rmtuser=N'ReportReadOnly'
    , @rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'collation compatible'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'data access'
    , @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'dist'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'pub'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'rpc'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'rpc out'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'sub'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'connect timeout'
    , @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'collation name'
    , @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'lazy schema validation'
    , @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'query timeout'
    , @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'use remote collation'
    , @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
    , @optname=N'remote proc transaction promotion'
    , @optvalue=N'true'
1
Mike Lemay