次の方法で共有


MSSQLSERVER_912

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

詳細

属性
製品名 SQL Server
イベント ID 912
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 DB_RUNSCRIPTUPGRADE_STEP_FAILED
メッセージ テキスト アップグレード手順 '%.*ls' でエラー %d、状態 %d、重大度 %d が発生したため、データベース '%.*ls' のスクリプト レベルのアップグレードが失敗しました。 このエラー状態は深刻で、通常の操作に影響を与える可能性があるので、データベースはオフラインになります。 '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. 場合によっては、プロセスの一環として、トレース フラグ 902 を使用してSQL Server サービスを開始する必要がある場合があります (以下の手順を参照)。 T902 を使用してサービスを開始すると、サービスは起動時にアップグレード スクリプトの実行をスキップできます。 そうすることで、基になる問題を調査して修正する機会が得られます。
  5. セットアップ プロセスでアップグレード スクリプトの実行フェーズを再起動できるように、問題を解決したら、必ずトレース フラグを削除してください。

トレース フラグ 902 を使用して SQL Server を起動する手順

構成マネージャーの使用

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

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

注意

問題を解決したら、必ず -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