次の方法で共有


MSSQLSERVER_3624

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 3624
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 SYS_ASSERTFAIL
メッセージ テキスト システム アサーション チェックが失敗しました。 詳細については、SQL Server エラー ログを確認してください。 通常、アサーションの失敗はソフトウェアのバグまたはデータの破損が原因で発生します。 データベースが破損していないかどうかを確認するには、DBCC CHECKDB の実行を検討してください。 セットアップ中、ダンプを Microsoft に送信することに合意した場合は、ミニ ダンプが Microsoft に送信されます。 また、Microsoft から提供される最新の Service Pack や製品サポート サービスから提供される修正プログラムに、更新プログラムが含まれている場合もあります。

説明

アサートは、特定の条件が満たされていることを確認するために、アプリケーションのコードに配置されるステートメントです。 その点で、アサートはエラーと同様に動作します。 アサートは、強調的で確定的なエラーと考えることができます。 プログラムが通常の実行を続行するには、指定された条件が満たされている必要があります。 条件が満たされていない場合は、アサートが発生します。 詳細については、「C/C++ アサーション」を参照してください

SQL Server では、多くの場所でアサートを使用して、条件が満たされていることを確認します。 たとえば、条件 'existingState == DB_Unencrypted' は、コード内の次のコマンドが実行される前にデータベースの状態が暗号化されていないことをアサートします。 そうでない場合は、アサートが発生します。 エラー 3624 は、このような条件が満たされておらず、アサートが発生したことを通知します。

エラー 3624 は、MSSQLSERVER_17066と共に発生します。 SQL Server エラー ログでこれらのエラーを確認する方法の例を次に示します。 また、実行時にアサート条件が発生し、エラーが SQL Server からクライアント アプリケーションに送信されます。

Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"e:\\b\\s3\\sources\\sql\\ntdbms\\hekaton\\engine\\hadr\\physical\\ckptctrlprocesslogrecord.cpp">, line=1634 Failed Assertion = 'existingState == DB_Unencrypted'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"xdes.cpp">, line=4919 Failed Assertion = 'lck_sufficient (lckMode, LCK_M_IX) || lck_sufficient (lckMode, LCK_M_BU)'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
SQL Server Assertion: File: <diskio.cpp>, line=2902 Failed Assertion = 'filepos + cBytes <= GetMaxOffsetForIO ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

原因

アサートエラーが発生する可能性のあるいくつかの理由を次に示します。

製品のバグ
アサートエラーの一般的な理由は、条件が正しくない原因となる製品の問題です。 これらの問題は Microsoft が調査する必要があり、再現して理解した時点で修正できます。

データベースの破損 アサート エラーのもう 1 つの一般的な原因は、データベースの物理的な不整合です。 メモリ内の読み取り時に破損したデータ構造が原因で、予期される条件が false になり、アサートが発生する可能性があります。

外部ライブラリまたはフィルター ドライバー アサート メッセージのやや一般的な原因は、SQL Server メモリ内の外部 DLL、または SQL Server アクティビティを監視またはインターセプトするように設計されたフィルター ドライバーが原因であることが判明しました。 このような外部コンポーネントが SQL Server で使用するオブジェクトまたは構造体を変更すると、アサート エラーが発生する可能性があります。 詳細については、「特定のモジュールまたはフィルター ドライバーが読み込まれるときのパフォーマンスと整合性の問題」を参照してください

ハードウェアの問題 (メモリ、CPU) ハードウェアに障害が発生すると、メモリ内のデータ構造が破損し、アサートエラーが発生する可能性があります。 この問題はあまり一般的ではありませんが、発生します。

ユーザーの操作

  1. SQL Server のビルドを確認し、「実行されている SQL Server データベース エンジンのバージョンとエディションを決定する」を参照してください

  2. SQL Server バージョン利用可能な最新の更新プログラムを見つけるか、すべてのビルドのすべての修正プログラムを一覧表示する Excel ファイルを最適に開く

  3. 現在の SQL Server ビルド後にリリースされたアサート修正については、記事または Excel ファイルを確認してください。 アサートの問題を修正する後のビルドが見つかる場合は、そのビルドへのアップグレードを検討してください。

  4. 場合によっては、17066 エラーの失敗したアサーション部分で特定のアサート条件を検索できます。 たとえば、上記のメッセージで次を検索します lck_sufficient (lckMode, LCK_M_IX)。 この式は、一致する問題をより正確に検索するのに役立ちます。 この式は、最初にアサートをトリガーする条件であり、非常に具体的です。

  5. データベースで DBCC CHECKDB を実行します。 DBCC CHECKDB がデータベース破損エラーを報告する場合は、その問題を他の問題よりも先に解決することに重点を置きます。 クリーン なデータベース バックアップを復元し、データベースの不整合の根本原因を調査します。 詳細については、DBCC CHECKDB によって報告されるデータベース整合性エラーのトラブルシューティングを参照してください。 DBCC CHECKDB はトランザクション ログの破損をチェックせず、トランザクション ログが破損している場合は検出できないことに注意してください。

  6. SQL Server のメモリ領域に外部モジュールが読み込まれているかどうかを確認し、フィルター ドライバーも確認します

    SELECT * FROM sys.dm_os_loaded_modules
    WHERE company != 'Microsoft Corporation'
    

    フィルター ドライバーの場合は、コマンド プロンプトから次のコマンドを実行します。

    fltmc filters
    

    特定のモジュールまたはフィルター ドライバーが読み込まれるときのパフォーマンスと整合性の問題に関する推奨事項に従います。

  7. SQL Server を最新の累積的な更新プログラムに既にアップグレードしていて、DBCC CHECKDB でエラーが報告されない場合は、Microsoft テクニカル サポートに連絡し、次の情報を提供する準備をしてください。

    • \Log フォルダーからの SQL Server エラー ログ
    • \Log フォルダーに生成された SQL Server メモリ ダンプ (SQLDump00xx.mdmp)
    • アサートを使用可能な場合に再現する手順。 アサートが発生する原因となるクエリまたはアクションは何ですか?
    • fltmc filters'sys.dm_os_loaded_modules DMV との間の出力
    • システムに関する情報 - 出力 systeminfo