2016-11-29 68 views
0

我的要求是創建一個數據庫觸發器來跟蹤此數據庫下每個表上發生的所有更改。創建數據庫觸發器,以在SQL Server 2012數據庫中的所有表上審計插入

我注意到,創建數據庫觸發器有選項來跟蹤數據庫級別的變化,但不是在每個表級別上。

請給我建議。

+0

您是否嘗試過這些? https://gallery.technet.microsoft.com/scriptcenter/Create-Audit-Table-and-5cd69d5d https://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-跟蹤所有數據庫更改/ – Avias

回答

0

所以我猜你正在尋找在該數據庫中創建審覈表爲每個DML(更新,插入,刪除)事件是什麼,這樣你就可以這樣做在這個例子中爲每個表:

what is the correct syntax for creating a database trigger for insert, modify and delete

或者您可以使用此SP爲給定表創建審覈表並插入\ Update \ Delete觸發器。只是檢索數據庫中的所有表有這樣一個簡單的腳本,把它們放在一個臨時表和循環通過該表創建審計表和觸發器:

https://gallery.technet.microsoft.com/scriptcenter/Create-Audit-Table-and-5cd69d5d

DECLARE @Table_Name VARCHAR(100) 
    DECLARE @Schema_Name VARCHAR(100) 

    SELECT SCHEMA_NAME(schema_id) as SchemaName,name as TableName 
    INTO #Temp 
    FROM sys.tables 

    While (Select Count(*) From #Temp) > 0 
Begin 

    Select Top 1 @Table_Name = TableName From #Temp 
    Select Top 1 @Schema_Name = SchemaName From #Temp 
    EXEC GenerateTriggers @Schemaname = @Schema_Name,@Tablename = @Table_Name, @GenerateScriptOnly = 1 

    Delete #Temp Where TableName= @Table_Name and SchemaName = @Schema_Name 

End