NormalTable
和AuditNormalTable
。
NormalTable
和AuditNormalTable
。
Answers:
审计表用于跟踪一个或多个特定表的事务。它们使您可以看到正在进行的“日志”(因为缺少更好的词)。例如,假设您有一个这样的表:
create table SensitiveInformation
(
SensitiveNumber int not null,
SensitiveData varchar(100) not null
)
go
可能有些用户和/或应用程序有权从该表中插入,更新和删除。但是由于这些数据的敏感性,您可能需要一种快速简便的方法来跟踪谁在该表上做什么。
因此,您有一个审核表来跟踪对该表执行的操作。通常,这将包括基本的Who,What,When。
审核表可能如下所示:
create table SensitiveInformationAudit
(
SensitiveNumberNew int null,
SensitiveNumberOld int null,
SensitiveDataNew varchar(100) null,
SensitiveDataOld varchar(100) null,
Action varchar(50) not null,
AuditDate datetime not null,
LastUpdatedUser varchar(100) not null
)
go
审计表通常通过使用数据库触发器来填充。换句话说,当X
操作发生时SensitiveInformation
,将其详细信息插入中SensitiveInformationAudit
。
Action
场UPDATE
或INSERT
或DELETE
?
当您要跟踪敏感/机密表中的更改时,通常使用审核表。如果存在用于薪水率和奖金百分比的表,并且HR应用程序根据此数据来支付薪水,则对该表具有写访问权的用户可以进行未经授权的付款修改。
同时,应允许某些用户使用这些表。这是审计表的用处。审计表可用于跟踪更改后的数据的前后值。通常,他们还会保存额外的信息,例如进行更改的人员以及完成更改的时间。
因此,这些审核表会阻止授权用户执行未经授权的活动。它们还提供了一种还原为正确值的方法。
SQL 2008及更高版本具有称为“ 更改数据捕获”的内置功能,可用于此目的。
审计表由本机或第三方审计工具使用,它们捕获数据库上发生的数据更改,通常包括有关更改者,受影响对象,更改对象,更改时间的信息。 SQL登录名,用于进行更改的应用程序和主机。所有捕获的信息都存储在审核表中,并且应该通过导出或查询以用户友好的格式提供。