web-dev-qa-db-ja.com

SQL Server 2008 R2からSQL Server 2012インスタンスにmsdbを復元する

SQL Server 2008 R2インスタンスから別のボックスのSQL Server 2012インスタンスに移動します。すべてのエージェントジョブなどを取得するためにmsdbを復元したいのですが、次のエラーが発生します。

データベース 'msdb'の復元に失敗しました。
(Microsoft.SqlServer.Management.RelationalEngineTasks)
System.Data.SqlClient.SqlError:デバイス\ 10.0.0.3\BackUps\NOFAULT2010_msdb_FULL_20121016_220006.bakのシステムデータベースのバックアップは、別のバージョンのサーバー(10.50.1600によって作成されたため、復元できません) )このサーバー(11.00.2100)よりも。
(Microsoft.SqlServer.SmoExtended)

私が2012年から2008年に行こうとした場合、これは理解できますが、これは初めてのことです。

とにかくこれを機能させるには?または、エージェントのジョブ、ユーザー、blazi blahを転送するための最良の方法ではありませんか?

ありがとう

4
bumble_bee_tuna

ユーザーデータベースを復元しようとした場合-これで問題なく復元できます。問題は、これがシステムデータベースであることです。システムデータベースは、SQL Server 2008 R2 MSDBがSQL Server 2012で機能するために、意図されたSQLのバージョン用に設計されています。2つのバージョン間で機能が異なる必要はありません。 。理にかなっていますか?

短い答えジョブを実行するには、古いサーバーからジョブをスクリプト化し、新しいサーバーにスクリプトを適用します。いくつかある場合は、各ジョブを右クリックしてスクリプトを作成するのと同じくらい簡単にこれを行うことができます。または、大量のコードがあり、一度に1つずつ使用したくない場合は、PowerShellまたはその他のアプローチでスクリプトを調べます。

ログインを取るには、Sp_help_revloginスクリプト以下を参照し、サーバーレベルの役割と権限を古いものからコピーして、新しいものにコピーするスクリプト。

基本的に、あなたが持っているものの90%については、答えは「スクリプトで出力」であると確信しています。そして、そのスクリプトを新しいサーバーに適用するだけで、ログイン、ジョブなどがすべて、 SQL Server 2012用に設計されたMasterおよびMSDBデータベース。

少し長い答えと移行/アップグレードへのアプローチに関する簡単な説明

したがって、これらのオブジェクトをすべてSQL Server 2012に転送しようとしている場合、アプローチには2つの基本的なオプションがあります。

  1. インプレースアップグレードを実行します。 SQL Server 2008 R2からSQL Server 2012にインスタンスをアップグレードします。

長所-すべてのもの(エージェントジョブ、リンクサーバー、ログイン、アラート、オペレーター、メールプロファイルなど)を取得し、それを実行しないオブジェクトをコピーする必要があります。

短所-少し乱雑になる可能性があり、現在は正常に動作し、サポートされていますが、私は偏執的であり、成功していて、クイックロールバックオプション(新しいサーバーで問題が発生した場合は、移行中に古いサーバーに戻すだけです。インプレースアップグレードを使用すると、はるかに多くのことを実現できます)。

インプレースアップグレードの場合は ここ を開始できます。

  1. 新しいサーバーに移行...

この場合、上から賛否両論をひっくり返すだけです。このアプローチは、それほど難しいものでも、難しいものでもありません。それはちょうどいくつかの良い計画が必要です。基本的にあなた:

  • 古いサーバーで、通常はBooks Onlineにある各オブジェクトタイプ(ジョブ、リンクサーバー、SQLエージェントアラートなどのオブジェクト)の指示とアプローチに従って、移動するすべてのオブジェクトをスクリプトで書き出します。 。

  • sp_help_revlogin ログインとスクリプトを移動します このようなもの ログイン権限を移動します。

  • すでにDB内のユーザーと権限が含まれているデータベースをバックアップおよび復元します(デタッチアタッチでこれを行うのが好きです。ロールバック機能を維持するのに役立つためですが、どちらの方法でもこれを確認して実行しました)。互換性モードを変更する場合は、 2012モードでDBをサポートすることを計画し、それらをそのようにテストしました。または、それが計画であった場合は、2008モードのままにしてください。

  • 古いサーバーから上記で作成した新しいサーバーで、ジョブ、ログインなどのすべてのオブジェクトに対してこれらのスクリプトを実行します(DBの後でこれらのほとんどを実行すると便利です。デフォルトでは存在しないか、ジョブのデータベースにT-SQLステップが存在しない、など)

このアプローチのもう1つの良い点は、営業時間中に事前に試用できることです。そのインスタンスで使用されているアプリのテストまたは開発バージョンを2012にポイントし、何が壊れているかを確認します。修正して、チェックリストやロールバック計画などをテストして、夜のライブ準備を行います。

13
Mike Walsh