MSSQL(MSSQL 2008 R2)クラスターがあり、元に戻すことができない方法で失敗しました(長い話、サーバーがBSODループに陥り、Broadcomと私自身を非難しています)。
SQLバックアップを使用しましたが、さらに問題は、MDFおよびLDFファイルがSANにあるため、問題が発生する前にあったためです)。これで、新しく構築されたサーバーにこれらを復元するタスクが得られました。
データベース自体、ログイン、SSISパッケージは、私がこれらすべてを持っているので問題ではありません。私を悩ませているのは、以前のサーバーで定義されたSQLエージェントジョブです。これらがMSDBのどこかに保存されていることをぼんやりと認識していますが、すでに入手したMDF/LDFファイルからこれらを取得して新しいサーバーにロードするには、どのような手順を踏む必要がありますか?
新しいサーバーでmodal、msdb、master、tempのデータベースを復元するつもりはないので、古いファイルを別の名前で添付し、それらからジョブ定義をプルする必要がありますか。 ) 仕方?
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.
サービスが復元され、緊急に対処する必要がない場合は、msdb
を別のインスタンスに復元します(可能な場合)。エージェントジョブの定義がmsdb
に格納されていることは正しいので、復元後に、回復したいジョブをスクリプト化して、プライマリサーバーで再作成できます。
プライマリサーバーと一時インスタンスのどちらに復元する場合でも、SQL Serverのビルドバージョンはバックアップのバージョンと一致している必要があります。
次のコマンドでターゲットインスタンスを確認します。
SELECT @@version
-- or
SELECT SERVERPROPERTY('ProductVersion')
次のコマンドでバックアップを確認します。
RESTORE HEADERONLY
FROM DISK = '<path>'
結果セットには、ターゲットインスタンスによって返されるmajor.minor.build
文字列と一致する必要があるSoftwareVersionMajor
、SoftwareVersionMinor
、SoftwareVersionBuild
列が含まれます。
MDF/LOGファイルからシステムデータベースを復元する への回答で説明されているように、msdb
データファイルを添付することも可能です。