1

背景 我有一个生产 SQL Server 2005 服务器,4 个不同的应用程序连接到该服务器并进行更改。没有外键,在某些情况下也没有主键。不幸的是,将整个事情扔掉并从头开始不是一种选择。所以我的解决方案是开始将每个应用程序迁移到服务层方法,以便只有一个应用程序直接连接到数据库。

但是,在编写该服务层并迁移所有应用程序之前,需要解决一些问题。

因此,与其进行更改并希望它们不会破坏 4 个写得不好的应用程序中的任何一个(无法快速测试所有功能),我的解决方案是开始审核数据库

问题 如何审计 SQL Server 2005 上的每个用户正在访问/更新/调用哪些存储过程、表、列、视图。

我可以找出哪些表正在更新,但我不知道哪些列和哪些用户。我也不知道某些表是否仅通过存储过程/视图访问。

我知道 SQL Server 2008 具有更好的审计功能,但如果我可以在不花钱的情况下做到这一点,那就太好了。也就是说,如果最好的解决方案是升级或购买也是一种选择的软件。

4

1 回答 1

2

查看 SQL Server 2008 的CDC 功能。您不能在 2005 年直接使用它,但您可以为每个表编写一个触发器,以将所有数据更改记录到一个新的审计表中。即你的数据库中的每个表都有一个审计表,所有相同的列加上一些额外的列,说明操作是什么以及它发生的时间。

如果您的应用程序的性质意味着您可以从 CURRENT_USER 和 APP_NAME() 获取用户信息和/或应用程序信息,您也可以将该信息包含在审计表中。

并查看这个答案以获得更多好处。

于 2012-04-23T10:54:44.760 回答