リンクサーバの設定をしてほしいと言われたので、
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
で治りました。