【发布时间】:2017-02-13 11:54:23
【问题描述】:
我有一个典型的 Web 应用程序,非常基于 CRUD。当某些表或列发生变化时,我们需要存储有关它的历史信息。这可以例如是一个包含新/旧列值、时间戳、它所关联的表、更改它的用户名等的 AUDIT 表。
通常我已经实现了这个,例如使用触发器来获取此信息并存储到 AUDIT 表中。
但是,这是否可以通过 SQL Server 2016 审计功能自动实现?我想到了几个问题: 1) 是否能够将审计数据存储在数据库表中,如上面带有触发器的示例? 2) 是否允许应用程序读取数据,或者访问审计数据是否需要一些特殊的管理员凭据? 3) 是否可以指定需要记录哪些信息,或者该功能是否自动记录所有内容?
【问题讨论】:
-
这些数据的目的是审计还是历史?对于历史,您可能需要考虑新的时态表功能,如果合适的话。
-
我认为历史和审计是一回事。关键点是1)我们可能需要能够定义表结构,2)应用程序页面需要能够查询审计/临时表
-
对于历史表,Damien 提供的最佳方法是在 SQL Server 2016 上使用临时表 kodyaz.com/sql-server-2016/…。不幸的是,这些表没有导致更改的用户名
标签: sql-server audit sql-server-2016 audit-trail