次の方法で共有


MSSQLSERVER_3859

適用対象: SQL サーバー

詳細

属性 Value
製品名 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

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

    Note

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

  • 方法 2

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

    Note

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

詳細

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