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

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

Jan 03, 2025 am 09:58 AM

How Can I Log SQL Statements That Modify a Specific Table in SQL Server?

テーブルに影響を与える SQL をログに記録するトリガーの作成

特定のテーブルを変更する SQL ステートメントをトレースするには、トリガーを作成できますあのテーブルの上に。このトリガーは、変更をトリガーした SQL クエリをキャプチャできます。

トリガー コード:

CREATE TRIGGER [dbo].[TriggerName] ON [dbo].[TableName]
AFTER UPDATE
AS
BEGIN
    DECLARE @SQL NVARCHAR(MAX);
    SET @SQL = (SELECT TOP 1 text FROM sys.dm_exec_query_stats WHERE execution_count = 1 AND plan_handle = CONTEXT_INFO());
    INSERT INTO [dbo].[LogTable] (SQLText, TableName, UpdateDate) VALUES (@SQL, OBJECT_SCHEMA_NAME(OBJECT_ID), GETDATE());
END
ログイン後にコピー

SQL 実行手順:

トリガーをトリガーする SQL クエリを実行するには、次のようにプロシージャを作成します。

CREATE PROCEDURE [dbo].[UpdateProcedure]
AS
BEGIN
    UPDATE [dbo].[TableName] SET ColumnName = 'UpdatedValue' WHERE Condition;
END
ログイン後にコピー

トリガーの使用:

トリガーとプロシージャを作成した後、次の手順を使用して、テーブルに影響を与えた SQL をログに記録できます。

  1. ログを保存するテーブルを作成する情報:
CREATE TABLE [dbo].[LogTable] (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    SQLText NVARCHAR(MAX),
    TableName NVARCHAR(128),
    UpdateDate DATETIME
);
ログイン後にコピー
  1. 更新手順を実行します:
EXEC [dbo].[UpdateProcedure];
ログイン後にコピー
  1. ログテーブルを確認して、キャプチャされた SQL ステートメントおよびその他の関連情報を表示します。

を使用した代替アプローチXEvents:

または、SQL Server 拡張イベントを使用して、特定のテーブルを変更する SQL ステートメントをキャプチャすることもできます。これにより、トリガーと比較してより詳細な情報と柔軟性が提供されます。

セットアップ:

  1. 実行コンテキストをキャプチャする変数を宣言:
DECLARE @ContextID NVARCHAR(1024);
ログイン後にコピー
  1. sql_statement_completed の XEvent トレースを有効にするターゲットテーブルのイベント:
ALTER DATABASE [TestDB] SET ENABLE_XEVENT = ON;
EXEC sp_trace_create @trace_id = 1, @name = 'CaptureTableModifications', @destination = 4;
EXEC sp_trace_setevent 1, 24, 1;
EXEC sp_trace_setfilter 1, @columnname = 'object_id', @value = OBJECT_ID([dbo].[TableName]);
ログイン後にコピー
  1. トレースの開始:
EXEC sp_trace_start 1;
ログイン後にコピー
  1. 更新操作を実行します。
  2. 停止トレース:
EXEC sp_trace_stop 1;
ログイン後にコピー
  1. XEvent トレースのクエリ:
SELECT session_id, session_nt_address, text 
FROM sys.fn_xe_file_target_read_file('c:\Temp\trace.xel', 'c:\Temp\trace.xem', NULL, NULL);
ログイン後にコピー

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

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

See all articles