SQL Server Agentのジョブをすべて一括でスクリプト化する方法

SQL Server Agentに、多数のジョブが登録されているサーバーのジョブを別サーバーに移行する場合、ジョブを再作成しなければなりません。
ジョブそのものは、システムデータベースのmsdbに登録されています。しかし、msdbを別サーバーに復元しても正常に動作しません。正常に移行するためには、ジョブを再作成する必要があります。

データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理

移動先のサーバー インスタンスの master および msdb で、依存しているエンティティとオブジェクトのすべてのメタデータを再作成する必要があります。たとえば、データベース アプリケーションでサーバーレベルのトリガーを使用している場合、そのデータベースを新しいシステムでアタッチまたは復元するだけでは不十分です。このデータベースは、master データベース内のこれらのトリガーのメタデータを手動で再作成しない限り、正常に動作しません。

つまり、ジョブをスクリプト化して、新しいサーバに対して発行することでジョブを移行させることになります。

image

ジョブを選択して、右クリックしてコンテキストメニューから、ジョブをスクリプト化できます。

ジョブが多数ある場合・・・

下の図のように、ジョブが多数ある場合は、どうしたら良いのでしょうか?

image

一個一個、スクリプト化なんて対応は厳しいです。
ジョブをまとめて一括で、すべてスクリプト化できると好いですよね?
SQL Server Agentのジョブをまとめてスクリプト化するには、ジョブを選択して[F7]キーを押します。

image

[F7]キーを押すと、オブジェクトエクスプローラーの詳細が表示されます。

image

オブジェクトエクスプローラーの詳細ウィンドウで、Ctrl+Aもしくは、Shiftキーを押しながら選択します。

image

選択した状態で、右クリックをしコンテキストメニューからジョブをスクリプト化を選択すると、ジョブをまとめてスクリプト化することができます。

image

フィードバック

できれば、オブジェクトエクスプローラーで右クリックしたときにも、すべてをスクリプト化できる選択肢があると良いんですけどね。

image