在审计跟踪系统上工作,并决定使用带有触发器的影子/历史记录表来执行此操作。
遵循此审计跟踪文章并尝试使用 CodeSmith 生成器工具
我不明白它是如何创建历史记录表和触发器的。
有没有人能理解它是如何工作的并帮助我。
我试着谷歌来理解它。但是没有明确的例子
对我来说,以下内容什么都不清楚
审核表如下所示
CREATE TABLE [dbo].[<%= AuditTableName %>] (
[ChangeLogID] [int] IDENTITY (1, 1) ,
[OperationType] [varchar] (10) NOT NULL ,
[ChangeTimestamp] [datetime] NOT NULL ,
[MadeBy] [varchar] (6) NOT NULL ,
[TableChanged] [varchar] (50) NOT NULL
) ON [PRIMARY]
详细信息表如下所示
CREATE TABLE [dbo].[<%= AuditFieldTableName %>] (
[FieldName] [varchar] (50) NOT NULL ,
[ChangeLogID] [int] NOT NULL ,
[BeforeValue] [sql_variant] NOT NULL ,
[AfterValue] [sql_variant] NOT NULL
) ON [PRIMARY]
如何生成并添加触发器以及如何插入审计字段表名称值?
由于我们在多个表中有不同类型的列,因此您指定的审核表并不能真正满足原因。我建议以下审计表:
TABLE auditEntry (
auditEntryId INTEGER PRIMARY KEY,
operationType VARCHAR(10) NOT NULL, -- For INSERT / UPDATE / DELETE
changeTimestamp DATETIME NOT NULL,
madeBy VARCHAR(50) NOT NULL,
tableName VARCHAR(30) not null, -- stores the name of the table changed
columnName VARCHAR(30) not null, -- stores the name of column changed
oldInt INTEGER,
newInt INTEGER,
oldVarchar VARCHAR(100),
newVarchar VARCHAR(100),
oldDate DATETIME,
newDate DATETIME)
现在我认为,如果您具有编写行级别触发器的工作知识,那么在表上为INSERT
、UPDATE
和DELETE
编写行级别触发器是小菜一碟。搜索MSDN如何编写此类触发器,你会没事的。