SQL Server2005からSQL Server2008のDBをリンクサーバで参照しようとするとエラーがでる

リンクサーバの設定をしてほしいと言われたので、


2008R2のサーバに対してユーザを追加して、2005のサーバにリンクサーバの追加をして、参照しようとしたらエラーがでた。





TITLEMicrosoft SQL Server Management Studio


------------------------------


この要求のデータを取得できませんでした。 (Microsoft.SqlServer.Management.Sdk.Sfc)


ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476 をクリック


------------------------------


ADDITIONAL INFORMATION:


Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)


------------------------------


EXECUTE 権限がオブジェクト 'xp_prop_oledb_provider'、データベース 'mssqlsystemresource'、スキーマ 'sys' で拒否されました。 (Microsoft SQL Server、エラー: 229)



SAだと、上手くいくから権限的な問題だろうなぁと思いつつ、検索するも日本語のサイトがでてこない……。


http://blogs.msdn.com/b/john_daskalakis/archive/2010/02/01/9956271.aspx


の通りやったらうまく行きましたとさ。


現象:


SQL Serverのリンクサーバに対してのクエリを実行した



  • リンクサーバオプションの「このセキュリティコンテキストを使用する」を選択している

  • ↑のエラーが発生した


解決方法:


masterデータベースにたいして、public roleを付与する



  • xp_prop_oledb_providerストアドの実行権限を付与する。


そのクエリは



USE master;

Grant execute on sys.xp_prop_oledb_provider to [ログイン名];

GO

で治りました。