创建数据库触发器,以审核 SQL Server 2012 数据库中所有表的插入
Create database trigger, to audit insert on all tables in SQL Server 2012 database
我的要求是创建一个数据库触发器来跟踪此数据库下每个 table 发生的所有更改。
我注意到创建数据库触发器有选项可以跟踪数据库级别的更改,但不是每个 table 级别。
请推荐我。
所以我猜您正在寻找的是为该数据库中的每个 DML(更新、插入、删除)事件创建审计 tables,因此您可以像本例中那样为每个 table:
what is the correct syntax for creating a database trigger for insert, modify and delete
或者您可以使用此 SP 为给定 table 创建审核 Table 和 Insert\Update\Delete 触发器。只需使用像这样的简单脚本检索数据库中的所有 tables,将它们放入临时 table 并循环遍历 table 以创建审计 table 和触发器:
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
我的要求是创建一个数据库触发器来跟踪此数据库下每个 table 发生的所有更改。
我注意到创建数据库触发器有选项可以跟踪数据库级别的更改,但不是每个 table 级别。
请推荐我。
所以我猜您正在寻找的是为该数据库中的每个 DML(更新、插入、删除)事件创建审计 tables,因此您可以像本例中那样为每个 table:
what is the correct syntax for creating a database trigger for insert, modify and delete
或者您可以使用此 SP 为给定 table 创建审核 Table 和 Insert\Update\Delete 触发器。只需使用像这样的简单脚本检索数据库中的所有 tables,将它们放入临时 table 并循环遍历 table 以创建审计 table 和触发器:
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