次の方法で共有


MSSQLSERVER_912

適用対象: SQL Server 2019 (15.x) 以降 - Windows のみ

詳細

属性
製品名 SQL Server
イベント ID 912
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 DB_RUNSCRIPTUPGRADE_STEP_FAILED
メッセージ テキスト データベース '%.*ls' のスクリプト レベルのアップグレードに失敗しました。アップグレード 手順 '%.*ls' でエラー %d、状態 %d、重大度 %d が発生しました。 このエラー状態は深刻で、通常の操作に影響を与える可能性があるので、データベースはオフラインになります。 'master' データベースのアップグレード中にこのエラーが発生した場合は、SQL Server インスタンス全体を開始できません。 スクリプトのアップグレード手順が最後まで実行されるように、これまでのエラー ログ エントリを参考にしてエラーを調査し、適切な方法で対処して、データベースを再起動してください。

説明

エラー 912 は、データベース スクリプトの実行に失敗し、サーバーに必要な最新レベルにデータベースをアップグレードできなかったことを示します。 これは、失敗したアップグレード スクリプトへの参照と、失敗したスクリプトで発生したエラーが含まれる、一般的なエラー メッセージです。

SQL Server をアップグレードするか、累積的な更新プログラムを適用すると、バイナリのみが最初にアップグレードされます。 データベースとそのオブジェクトは変更されません。 バイナリが新しいバージョンに置き換えられ、サービスが初めて再起動されると、データベースのアップグレードが開始されます。 実行されるアップグレード スクリプトは、C:\Program Files\Microsoft SQL Server\MSSQLXX.YYYY\MSSQL\Install にあります。

アップグレード プロセスでスクリプトレベルのアップグレード エラー (エラー 912) が発生した場合、他のエラーが発生することがあります。 たとえば、エラー 912 にはこれらのエラーが伴い、その失敗についてさらに説明するのに役立つことがあります。

Error: 1101, Severity: 17, State: 1.
Could not allocate a new page for database 'tempdb' because of insufficient disk space in filegroup 'PRIMARY'. Create the necessary space by dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

Error: 912, Severity: 21, State: 2.
Script level upgrade for database 'master' failed because upgrade step 'xxx.sql' encountered error <Error Number>, state <Error State>, severity <Error Severity>. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.

Error: 3417, Severity: 21, State: 3.
Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.

通常、インストール プロセスが失敗すると、ウィザードを使用して手動でインストールが行われると仮定して、GUI に次のエラーが表示されることがあります。 このエラーは、さまざまなインストールの問題で発生する可能性があることに注意してください。 ただし、いずれの場合も、SQL Server エラー ログで詳細を確認するように指示されます。

Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.

GUI でのアップグレードエラー

ユーザー アクション

問題の原因を見つけるには、次の手順に従います。

  1. SQL Server Errorlog を見つけて開きます。
  2. エラー 912 の直前に発生したエラーがないかログを調べ、エラー 912 のメッセージングで参照されるエラーのトラブルシューティングに重点を置きます。
  3. Microsoft のお客様から報告された一般的なシナリオの一部については、「データベース エンジンの復旧処理に失敗しました」および「912」および「3417」のエラーを参照してください。
  4. 場合によっては、プロセスの一環として、 trace フラグ 902 を使用して SQL Server サービスを開始する必要があります (以下の手順を参照)。 T902 でサービスを開始すると、サービスは起動時にアップグレード スクリプトの実行をスキップできます。 そうすれば、基になる問題を調査して修正する機会が得られます。
  5. セットアップ プロセスでアップグレード スクリプトの実行フェーズを再開できるように、問題を解決したら、必ずトレース フラグを削除してください。

トレース フラグ 902 で SQL Server を起動する手順

構成マネージャーの使用

  1. SQL Server 構成マネージャーを起動します。
  2. SQL Server Services で SQL Server インスタンスを選択します。
  3. そのインスタンスを右クリックし、[プロパティ] を選択します。
  4. [起動時のパラメーター] タブを選択します。
  5. [Specify a startup parameter]\(起動時のパラメーターの指定\) フィールドを使用して、トレース フラグを追加します。 「-T902」と入力し(引用符を除く)、 [追加]をクリックします。
  6. [OK] を選択して、インスタンスのプロパティを閉じます。
  7. SQL Server サービスを開始します。

起動オプションを構成する方法の詳細については、「SQL Configuration Manager サービス - サーバー起動オプションを構成する」を参照してください。

Note

問題を解決したら、必ず -T902 を構成から削除してください。

sqlservr.exe を使用したコマンド プロンプト

  1. 管理者特権でコマンド プロンプトを開き、ディレクトリを SQL Server の Binn ディレクトリ (例: C:\Program Files\Microsoft SQL Server\MSSQLXX.YYYY\MSSQL\Binn) に変更します。

  2. sqlservr.exe -s <instance> -T902 を実行します。

    既定のインスタンス:

    cd \Program Files\Microsoft SQL Server\MSSQL<version>\MSSQL\Binn
    sqlservr.exe -s MSSQLSERVER  -T902
    

    名前付きインスタンス ("sql2016" はインスタンス名の例):

    cd \Program Files\Microsoft SQL Server\MSSQL<version>.<instance name>\MSSQL\Binn
    sqlservr.exe -s sql2016  -T902
    
  3. 終了したときにインスタンスを停止するには、CTRL+C を押してから、Y を押します。

net start を使用したコマンド プロンプト

既定のインスタンス:

NET START MSSQLSERVER /T902 

名前付きインスタンス:

NET START MSSQL$INSTANCENAME  /T902