创建数据库触发器,以审核 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