Sqlserver 2008 r2を使用して、SQLエージェントジョブでリモートサーバーのストアドプロシージャを実行しようとしています
select * from openquery([1.1.1.1],'exec [DB_Name].[dbo].[sp_ProcName]')
または
EXEC [1.1.1.1].[DB_Name].[dbo].[sp_ProcName]
しかし、私は次のエラーを受け取りました:
Sys.serversにサーバー「1.1.1.1」が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアドプロシージャsp_addlinkedserverを実行して、サーバーをsys.serversに追加します。
(正しいIPを入力します)ありがとうございます!
エラーメッセージが示すように、OPENQUERY
はリンクサーバーを探します。その設定がなく、その設定を取得する権限がない場合は、おそらく OPENROWSET
クエリを使用するのがよいでしょう。これにより、完全な接続文字列を含むクエリを記述して、より臨機応変にデータソースに接続できます。
あなたの場合、次のようなものを使用することで結果を得ることができます:
SELECT spresults.*
FROM OPENROWSET('SQLNCLI', 'Server=1.1.1.1;Trusted_Connection=yes;',
'EXEC [db_name].dbo.[sp_ProcName]') AS spresults
警告:SPが複数の結果セットを返す場合、これは実行時に失敗します。
警告2:これは、アドホッククエリが許可されていない場合にも失敗します。それを整理するには、 appropriatesp_configure
ステートメント:
exec sp_configure 'show advanced options', 1
reconfigure
exec sp_configure 'ad hoc distributed queries', 1
reconfigure
もちろん、sp_configure
、SQL Serverで適切な権限が必要です。 sp_configure
ドキュメンテーション、それは「ALTER SETTINGS」です。これは、デフォルトではsysadminおよびserveradminロールの一部ですが、他のロールにも割り当てることができます。