ホームページ >データベース >mysql チュートリアル >SQL Server の特定のテーブルに影響を与える SQL ステートメントをログに記録するにはどうすればよいですか?

SQL Server の特定のテーブルに影響を与える SQL ステートメントをログに記録するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-03 01:00:39205ブラウズ

How Can I Log the SQL Statements Affecting a Specific Table in SQL Server?

SQL Server で影響を受ける SQL をログに記録するトリガーを作成する

SQL Server 2008 では、テーブルを変更する SQL をキャプチャするトリガーを作成できます。監査目的でログに記録します。

トリガー定義:

CREATE TRIGGER [dbo].[triggerAfterUpdate] 
   ON  [dbo].[TableWithMysteryUpdate] 
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [dbo].[LogTable] (
        ModifiedDate,
        ModifyingSQL
    )
    VALUES (
        GETDATE(),
        EVENTDATA()
    );
END

ログテーブル定義:

CREATE TABLE [dbo].[LogTable] (
    [LogID] [INT] NOT NULL IDENTITY(1, 1),
    [ModifiedDate] [DATETIME] NOT NULL,
    [ModifyingSQL] [NVARCHAR](MAX) NOT NULL
);

使用例:

作成後トリガーでは、[dbo].[TableWithMysteryUpdate] テーブルへの更新がすべてログに記録されます。 [dbo].[LogTable].

追加メモ:

  • EVENTDATA() 関数は、イベントをトリガーした実行された SQL ステートメントをキャプチャします。
  • GETDATE() 関数は、更新の日時を記録します。
  • ログ テーブルをカスタマイズして、更新を行ったユーザーや影響を受ける行などの追加情報を含めることができます。
  • このアプローチにより、データベースに関する広範な知識を必要とせずに、特定のテーブルを変更する SQL を可視化できます。

以上がSQL Server の特定のテーブルに影響を与える SQL ステートメントをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。