次の方法で共有


SQL Server エージェントのマスタ ジョブを作成する方法 (Transact-SQL)

更新 : 2005 年 12 月 5 日

このトピックでは、ストアド プロシージャを使用して Microsoft SQL Server エージェントのマスタ ジョブを作成する方法について説明します。

SQL Server エージェント用に使用される Windows アカウントがマルチサーバー環境に与える影響については、「マルチサーバー環境の作成」を参照してください。

SQL Server エージェントのマスタ ジョブを作成するには

  1. sp_add_job を実行して、ジョブを作成します。

  2. sp_add_jobstep を実行して、1 つ以上のジョブ ステップを作成します。

  3. sp_add_schedule を実行して、スケジュールを作成します。

  4. sp_attach_schedule を実行して、スケジュールをジョブにアタッチします。

  5. sp_add_jobserver を実行して、ジョブが実行される対象サーバーを指定します。

SQL Server エージェントのマスタ ジョブの変更は、関係するすべての対象サーバーに伝達する必要があります。sp_add_jobserver が呼び出されるまで対象サーバーはジョブをダウンロードしないので、Microsoft では、sp_add_jobserver を実行する前に、特定のジョブのすべてのジョブ ステップとジョブ スケジュールを完了しておくことをお勧めしています。この順序に従わなかった場合は、後で sp_post_msx_operation を呼び出して、変更されたジョブを対象サーバーが再びダウンロードするように要求する必要があります。

セキュリティ

プロキシに関連付けられているステップを持つ分散ジョブは、対象サーバーのプロキシ アカウントのコンテキストで実行されます。次の条件を満たしていることを確認してください。満たしていないと、プロキシに関連付けられているジョブ ステップがマスタ サーバーから対象サーバーにダウンロードされません。

  • レジストリ サブキー \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance_name>\SQL Server Agent\AllowDownloadedJobsToMatchProxyName (REG_DWORD) が 1 (true) に設定されていること。既定では、この値は 0 (false) に設定されます。
  • ジョブ ステップを実行するマスタ サーバー プロキシ アカウントと同じ名前を持つ対象サーバーにプロキシ アカウントが存在すること。

マスタ サーバーから対象サーバーにプロキシ アカウントをダウンロード中に、これらのアカウントを使用するジョブ ステップが失敗した場合は、msdb データベースの sysdownloadlist テーブルの error_message 列を参照して、以下のエラー メッセージの有無を確認します。

  • "ジョブ ステップではプロキシ アカウントが必要ですが、対象サーバーで一致するプロキシが無効です。"
    このエラーを解決するには、AllowDownloadedJobsToMatchProxyName レジストリ サブキーを 1 に設定します。
  • "プロキシ アカウントが見つかりませんでした。"
    このエラーを解決するには、対象サーバー上にプロキシ アカウントが存在し、ジョブ ステップを実行するマスタ サーバー プロキシ アカウントと同じ名前が付けられているかどうかを確認します。

参照

その他の技術情報

システム ストアド プロシージャ (Transact-SQL)
sp_add_job (Transact-SQL)
sp_add_jobstep (Transact-SQL)
sp_add_schedule (Transact-SQL)
sp_attach_schedule (Transact-SQL)
sp_add_jobserver (Transact-SQL)
sp_post_msx_operation (Transact-SQL)
sp_msx_get_account (Transact-SQL)
sp_msx_set_account (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手