64 ビットSQL Server から SQL Server 2000 へのリンクサーバー設定について
皆さんこんにちは。 SQL Server/SQL Database サポートを担当しております 高原 です。 今回は、SQL Server に関するお問い合わせの中で、よくあるお問い合わせの一つを紹介したいと思います。
64 ビット SQL Server (2005/2008/2008R2) 環境から SQL Server 2000 環境へのリンクサーバー設定を実施後、リンクサーバー経由でクエリを実行すると、以下のようなエラーに直面する場合があります。
---
メッセージ 7311、レベル 16、状態 2、行 1
リンク サーバー "*********" の OLE DB プロバイダー "SQLNCLI10" のスキーマ行セット "DBSCHEMA_TABLES_INFO" を取得できません。
---
このエラーは、SQL Server 2005/2008/2008R2 の64ビット環境から、SQL Server 2000 環境に対してリンクサーバーを使用する場合、64ビット環境からのリンクサーバー用のシステムストアドプロシージャを事前に作成する必要があるのですが、事前に作成されていない場合に発生しうるエラーとなります。
そのため、64ビット環境からのリンクサーバー用のシステムストアドプロシージャを作成することにより、このエラーは解消することができます。詳細な対処方法を以下に記載します。
[対処方法]
1. SQL Server 2000 に Service Pack 4 を適用します。
2. SQL Server 2000 のインストールフォルダ (既定: C:\Program Files\Microsoft SQL Server\MSSQL\Install) 配下より、スクリプト "instcat.sql" を検索します。
3. SQL Server 2000 のMaster データベースに対して、スクリプト "instcat.sql" を実行します。
4. "instcat.sql completed successfully" というメッセージが出力され、コマンドが正常に完了したことを確認します。
※ スクリプト "instcat.sql" 実行時、以下のようなメッセージが出力される場合がございますが、以下のメッセージは無視下さい。
---
存在しないオブジェクト 'sp_ddopen' に依存しているので、現在のストアドプロシージャで sysdepends に行を追加できません。ストアドプロシージャは作成されます。
---
また、最新の SQL Server 2012 にも 64 ビット版はありますが、SQL Server 2012 から SQL Server 2000 に対するリンクサーバーはサポートされておらず、正常に動作させることができません。
尚、SQL Server 2012 から SQL Server 2005/2008/2008R2/2012 へのリンクサーバーは サポートされているため、SQL Server 2012 から SQL Server 2000 に対するリンクサーバーを使用することをご検討されている場合は、SQL Server 2000 のデータベースをSQL Server 2005/2008/2008R2/2012 へ移行することをご検討下さい。
[参考情報]
SQL Server 2000 は、2013年4月9日 をもって、サポートが終了します。 そのため、現在 SQL Server 2000 をご使用されている方は、計画的に 最新のSQL Server (SQL Server 2008 R2/2012 など) 製品への移行をご検討下さい。
マイクロソフト プロダクト サポート ライフサイクル
https://support.microsoft.com/lifecycle/?p1=2852
※ 本Blogの内容は、 2012年8月 現在の内容となっております。
--
Support Engineer
Nobushiro Takahara