MSSQLSERVER_3168

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 3168
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 LDDB_SYSTEMWRONGVER
メッセージ テキスト デバイス %ls のシステム データベースのバックアップは復元できません。このバックアップを作成したサーバーのバージョン (%ls) とこのサーバーのバージョン (%ls) が異なります。

説明

バックアップが最初に作成されたビルドとは異なるサーバー ビルド上のシステム データベース (mastermodelまたは msdb) のバックアップを復元することはできません。

注意

累積的な更新プログラムやサービス パック、GDR などのサービス更新プログラムをインストールすると、サーバーのビルド番号が変更されます。 サーバー ビルドは常に増分です。

考えられる原因

システム データベースのデータベース スキーマは、サーバー ビルド間で変更される可能性があります。 スキーマの変更によって不整合が発生しないようにするために、RESTORE ステートメントは、バックアップ ファイルのサーバー ビルド番号と、バックアップを復元しようとしているサーバーのビルド番号を比較します。 ビルドが異なる場合、ステートメントは "3168" エラー メッセージを発行し、復元操作は異常終了します。

この問題が発生する可能性のあるシナリオには、次のようなものがあります。

  • サーバー B で作成されたバックアップからサーバー A 上のシステム データベースを復元しようとするとします。サーバー A とサーバー B は異なるサーバー ビルド上にあります。 たとえば、サーバー A が最初のリリース バージョンのビルドで、サーバー B が Service Pack 1 (SP1) ビルドであるような場合です。

  • 同じサーバー上で作成されたバックアップからシステム データベースを復元しようとするとします。 ただし、バックアップ プロセスの実行時に、サーバーで別のビルドが実行されていました。 つまり、バックアップの作成後にサーバーがアップグレードされました。

ユーザー アクション

この問題を解決するには、次の手順に従ってください。

注意

次の手順では、サーバー A はバックアップが作成されるソース SQL Server ベースのサーバーであり、サーバー B はバックアップの復元先SQL Serverベースのサーバーです。

  1. 次のクエリを使用して、サーバー B (バージョン B) のバージョンを確認します。

    SELECT @@VERSION

  2. 次のようなクエリを実行して、ソース バックアップの実行時に実行されていたSQL Serverのバージョン (バージョン A) を確認します。

    RESTORE headeronly FROM disk = 'c:\sqlbackups\masterdb.bak'

  3. SoftwareVersionMinor、および SoftwareVersionBuild 列のSoftwareVersionMajor値を確認して、バックアップの作成時に使用されたソース サーバーのビルドを確認します。 たとえば、値が次の値であるとします。

    • SoftwareVersionMajor: 15
    • SoftwareVersionMinor: 0
    • SoftwareVersionBuild: 4236 この場合、バックアップが作成されたときのソース SQL Server バージョンは 15.0.4236 です。
  4. SQL Server完全なバージョン 一覧テーブルまたは Excel ビルド スプレッドシートを使用して、ビルドが対応するSQL Serverのバージョンを確認します。 たとえば、15.0.4236 は SQL Server 2019 CU16+GDR (バージョン A) にマップされます。

  5. 次のいずれかのオプションを使用します。

    • バージョン A がバージョン B より大きい場合は、SQL Serverの最新の更新プログラムとバージョン履歴にある情報を使用して、サーバー B をバージョン A と同じビルドにアップグレードします。

    • バージョン A がバージョン B より小さい場合は、次の手順を使用して、後の更新プログラムを一時的に削除します。

      1. [コントロール パネルプログラムプログラム>と機能] を選択し、[インストールされている更新プログラムの表示] を選択します。

      2. バージョン B に対応する以降の各更新プログラム パッケージに対応するエントリを見つけます。

      3. エントリを長押し (または右クリック) し、[アンインストール] を選択 します

    • バージョン B がバージョン A と同じであることを確認したら、サーバー B のマスター データベースの復元操作を再試行します。

  6. (推奨)サーバー B を利用可能な最新バージョンに更新し、システム データベースの新しいバックアップを作成します。

関連項目

システム データベースの復元に関する制限事項 (SQL Server)

マスター データベースを復元する (Transact-SQL)

master データベースを再構築する最も簡単な方法