首頁 >資料庫 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn