web-dev-qa-db-ja.com

別のサーバーでストアドプロシージャからジョブを実行しますか?

ストアドプロシージャを使用して別のサーバーからジョブを実行するにはどうすればよいですか?

まあ言ってみれば

  • サーバー1:db1
  • サーバー2:db2
  • ユーザー名:testsis
  • パスワード:testssispass
  • db2で見つかったsqljob:job1

これはどのようにしてこの作業を行うことができるかで失われた部分です。

xp_cmdshell + osql command -U: -P: + sp_startjob
1
anonymous1110

リンクサーバー を使用すると、xp_cmdshellよりもはるかに信頼性と安全性が高くなります。

EXEC Server2.msdb.dbo.sp_start_job @job_name = N'Job2';
6
Aaron Bertrand

サーバーBのストアドプロシージャにSQLジョブを含めることができます。サーバーBをリンクサーバーとしてサーバーAに追加し、サーバーAからストアドプロシージャを実行します。

EXEC [RemoteServer].DatabaseName.DatabaseOwner.StoredProcedureName
3
I am legend

プロシージャを実行する小さなSSISパッケージを作成します。プロジェクトをエージェントサーバーにデプロイします。エージェントジョブステップを使用してパッケージを実行します。

私のユースケース:イベントレコードの大規模なデータベースの末尾を削除する手順があり、ヘッドへの書き込みを妨げないようにしたかった。削除手順が短時間で自動的に停止することを確認してから、ヘッドに書き込む手順の後にエージェントステップを追加しました。

0
WaitForPete