SQL Server の特定のテーブルを変更する SQL ステートメントをログに記録するにはどうすればよいですか?
Jan 03, 2025 am 09:58 AMテーブルに影響を与える 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 をログに記録できます。
- ログを保存するテーブルを作成する情報:
CREATE TABLE [dbo].[LogTable] ( ID INT IDENTITY(1,1) PRIMARY KEY, SQLText NVARCHAR(MAX), TableName NVARCHAR(128), UpdateDate DATETIME );
- 更新手順を実行します:
EXEC [dbo].[UpdateProcedure];
- ログテーブルを確認して、キャプチャされた SQL ステートメントおよびその他の関連情報を表示します。
を使用した代替アプローチXEvents:
または、SQL Server 拡張イベントを使用して、特定のテーブルを変更する SQL ステートメントをキャプチャすることもできます。これにより、トリガーと比較してより詳細な情報と柔軟性が提供されます。
セットアップ:
- 実行コンテキストをキャプチャする変数を宣言:
DECLARE @ContextID NVARCHAR(1024);
- 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]);
- トレースの開始:
EXEC sp_trace_start 1;
- 更新操作を実行します。
- 停止トレース:
EXEC sp_trace_stop 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 サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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