新しいSQL Server 2012インスタンスがあり、SQL Server 2000からデータベースを移行しています。DB内の一部のストアドプロシージャを移動して、その2000サーバー上の別のデータベースを参照しています。これを処理する最良の方法は何ですか?
リンクサーバーは役に立ちますか?テスト用のリンクを作成できません。 ODBCの使用を推奨する人もいれば、SQL Server 10クライアントドライバー(SQLNCLI10)を使用する人もいます。 SQL Server 10クライアントドライバーを使用する方が良いようですが、SQL Server 2012インスタンスへのインストールに問題はありますか?
connect item で説明されているように、SQLNCLI10を使用するときは注意してください。
回避策を見つけることができます ここ
まず、そのようなSPを使用しているアプリケーションを2012年から2000年までテストする必要があります。これは、両方のサーバーが配置されている場所と、リンクサーバーを使用して引き出しているデータの量にも依存します。
他の参照データベースを2012に移動できない理由はありますか?
これが私がこれを機能させるために使用したサンプルコードです、これが誰かに役立つことを願っています!リンクサーバーは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プロバイダーを使用して接続したい場合は、 このブログ投稿 を確認して、ソリューションと詳細を取得してください
これは私のために働きました:
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'