MSSQLSERVER_3859

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 3859
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 DBCC_CHECKCAT_DIRECT_UPDATE
メッセージ テキスト 警告: システム カタログはデータベース ID %d で直接更新されました。最近は %S_DATE

説明

このエラーは、ユーザーがシステム テーブルの変更を始めたことを示します。 システム テーブルを手動で更新することはサポートされていません。 システム テーブルは、SQL Server データベース エンジンによってのみ更新される必要があります。 SQL Serverシステム テーブルに対するユーザーが開始した変更を検出すると、次の 2 つのシナリオでエラー 3859 が発生します。

  • シナリオ 1

    次のようなイベントは、手動で更新されたシステム テーブルを含むSQL Server データベースを起動すると、イベント ビューアー SQL Serverエラー ログまたはアプリケーション ログに記録されます。

    ログ名:Application
    ソース:MSSQLSERVER イベント ID: 3859
    タスク カテゴリ:サーバー
    レベル: Information
    説明: 警告: システム カタログはデータベース ID %d で直接更新されました。最近 では、date_time

  • シナリオ 2

    システム テーブルが手動で更新された後に DBCC_CHECKDB コマンドを実行すると、次の警告メッセージが返されます。

    'database_name' の DBCC 結果。
    メッセージ 8992、レベル 16、状態 1、行 1
    カタログ メッセージ 3859、状態 1: 警告: システム カタログがデータベース ID %d で直接更新されました。最後に 、date_time
    CHECKDB により、データベース 'db_name' に 0 個のアロケーション エラーと 0 個の一貫性エラーが見つかりました。
    DBCC の実行が完了しました。 DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。

ユーザー アクション

この問題を解決するには、次の方法のいずれかを使用します。

  • 方法 1

    データベースのクリーン バックアップがある場合は、バックアップからデータベースを復元します。

    注意

    この方法は、バックアップにメタデータの不整合がない場合にのみ機能します。

  • 方法 2

    バックアップからデータベースを復元できない場合は、データとオブジェクトを新しいデータベースにエクスポートします。 次に、手動で更新されたデータベースの内容を新しいデータベースに転送します。 DBCC CHECKDB コマンドの REPAIR オプションを使用して、システム カタログの不整合を修復することはできないことにご注意ください。 したがって、コマンドでメタデータの破損を修復できないため、推奨される修復レベルは提供されません。

    注意

    システム テーブル内のデータは、システム カタログ ビューを使用して表示できます。

詳細情報

詳細については、以下を参照してください: 「システム ベース テーブル」。