2013-05-17 73 views
0

我有一个要求记录表中的所有更改。我在数据审计日志中阅读过很多文章。对我来说似乎都很复杂。简单的sql数据审计日志表

我打算在更新和删除数据之前保留所有表的副本。这是一个好主意吗?

+0

除了您或您的用户/客户,没有人能说出什么是“好主意”。这里的业务要求是什么?如果你在一个合法控制的环境中工作,在这个环境中你需要对每一个改变进行完整的审计跟踪,那么也许你需要为每张桌子设置它,即使它工作更多。但也许这个要求只是跟踪一个或两个特定的表格,而且你可以做一些简单的事情。如果你可以让你的问题更加精确和技术性,你可能会得到更好的回应。 – Pondlife

回答

1

如果我们只谈论一张桌子,那么是的。如果有几个表,那么也许。如果有很多表需要审计,那么不需要。

原因是您必须维护更多复制表的原因是它变得越复杂。此外,从许多表格报告可能变成一项艰巨的任务。

这里有一些其他的想法:

两个表的设计存储:做是为了保持有关交易的细节在一个表(用户,主机,交易时间,表名,数据库名称等),第二表中的数据更改(旧值,键等)

第三方工具:有几种工具可以提供不同级别的审计。 ApexSQL Audit是一个基于触发器的审计工具,ApexSQL Log更高级,可以审计权限和模式更改,Idera的Compliance manager是最先进的,甚至可以捕获select语句。

更改数据捕获:这是内置于SQL Server 2008+,但仅限于企业版本。

+0

是的。它不是一张桌子。我计划使用触发器将更改和删除的数据(整行)存储到每个表的审计表中。所有的审计表都在同一个数据库中。如果我使用CDC,很容易就能显示一行数据的两个版本之间的变化报告?在我的方法中,很容易显示一行数据的两个版本之间的差异,因为整行可用... – zak

+0

这将是非常简单的,因为内置了显示此信息的系统函数,您也可以使用CDC模式查询审计表。有关更多信息,请参见[this](https://www.simple-talk.com/sql/learn-sql-server/introduction-to-change-data-capture-(cdc)-in-sql-server-2008 /)。细节。 – Dwoolk

+0

Renhold Software的[SQL Table Audit](https://renholdsoftware.com/SQLTableAudit)是另一个价格相对较低的第三方替代品。它通过生成触发器来工作。 – rpearsondev

0

为了解数据库中每个表中所做的更改,我相信您应该使用LepideAuditor for SQL Server。通过此工具,您可以跟踪有关在数据库和SQL Server对象上执行的创建,更改,删除活动的更改。 它详细介绍了在这些对象上进行的所有操作的人员,时间和地点。

0

如果您打算保留表格的副本,我建议您查看数据库快照。它将帮助您创建数据库的只读副本,并且可以轻松地还原表格并将其与快照进行比较。

关于SQL审计,开始时创建起来有点困难,但一旦您有一个工作,第二个审计将需要几分钟时间才能实施。

SQL Audit对于少数表格来说是一个不错的选择。如果您有多个,请使用更改数据捕获或第三方工具,如Lepide或apexsql触发器。