web-dev-qa-db-ja.com

デタッチされたマスター、モデル、mdbファイルのセットからSQLエージェントジョブをレスキューするにはどうすればよいですか?

MSSQL(MSSQL 2008 R2)クラスターがあり、元に戻すことができない方法で失敗しました(長い話、サーバーがBSODループに陥り、Broadcomと私自身を非難しています)。

SQLバックアップを使用しましたが、さらに問題は、MDFおよびLDFファイルがSANにあるため、問題が発生する前にあったためです)。これで、新しく構築されたサーバーにこれらを復元するタスクが得られました。

データベース自体、ログイン、SSISパッケージは、私がこれらすべてを持っているので問題ではありません。私を悩ませているのは、以前のサーバーで定義されたSQLエージェントジョブです。これらがMSDBのどこかに保存されていることをぼんやりと認識していますが、すでに入手したMDF/LDFファイルからこれらを取得して新しいサーバーにロードするには、どのような手順を踏む必要がありますか?

新しいサーバーでmodal、msdb、master、tempのデータベースを復元するつもりはないので、古いファイルを別の名前で添付し、それらからジョブ定義をプルする必要がありますか。 ) 仕方?

5
growse

MSDB DBを「jobsdb」のような別の名前で接続し、jobsdbからジョブをプルする必要があります。ジョブはjobsdb.dbo.sysjobsに保存され、ジョブステップはjobsdb.dbo.sysjobstepsに保存されます。これらは、job_id列で結合できます。

スケジュールは、schedule_idのjobsdb.dbo.sysjobschedulesと結合したjobsdb.dbo.sysschedulesの下にあります。

行は、挿入選択を使用するか、ストアドプロシージャを使用して、現在のmsdbに追加できます:sp_add_job, sp_add_jobstep, sp_add_jobschedule, sp_add_jobserver.

8
StanleyJohns

サービスが復元され、緊急に対処する必要がない場合は、msdbを別のインスタンスに復元します(可能な場合)。エージェントジョブの定義がmsdbに格納されていることは正しいので、復元後に、回復したいジョブをスクリプト化して、プライマリサーバーで再作成できます。

プライマリサーバーと一時インスタンスのどちらに復元する場合でも、SQL Serverのビルドバージョンはバックアップのバージョンと一致している必要があります。

次のコマンドでターゲットインスタンスを確認します。

SELECT @@version
-- or
SELECT SERVERPROPERTY('ProductVersion')

次のコマンドでバックアップを確認します。

RESTORE HEADERONLY
FROM DISK = '<path>'

結果セットには、ターゲットインスタンスによって返されるmajor.minor.build文字列と一致する必要があるSoftwareVersionMajorSoftwareVersionMinorSoftwareVersionBuild列が含まれます。

MDF/LOGファイルからシステムデータベースを復元する への回答で説明されているように、msdbデータファイルを添付することも可能です。

3