背景 我有一个生产SQL Server 2005服务器,4个不同的应用程序连接并进行更改。 没有外键,在某些情况下没有主键。 不幸的是,扔掉整件事并从头开始并不是一种选择。 所以我的解决方案是开始将每个应用程序迁移到服务层方法,以便只有一个应用程序直接连接到数据库。
但是,在编写服务层并迁移所有应用程序之前,需要解决一些问题。
因此,不是进行更改,而是希望它们不会破坏4个写得不好的应用程序中的任何一个(无法快速测试所有功能),我的解决方案是开始审核数据库
问题 如何审核SQL Server 2005上每个用户正在访问/更新/调用的存储过程,表,列,视图。
我可以找出哪些表正在更新但我不知道哪些列和哪些用户。 我也不知道是否只通过存储过程/视图访问某些表。
我知道SQL Server 2008具有更好的审核功能,但如果我能做到这一点,而不花钱就会很棒。这就是说,如果最好的解决方案是升级或购买也是一种选择的软件。
答案 0 :(得分:2)
查看SQL Server 2008的CDC feature。您不能在2005年直接使用它,但您可以为每个表编写一个触发器,以将所有数据更改记录到新的审计表中。即,您的数据库中的每个表都有一个审计表,其中包含所有相同的列以及一些其他列,说明操作是什么以及何时发生。
如果您的应用程序的性质意味着您可以从CURRENT_USER和APP_NAME()获取用户信息和/或应用程序信息,那么您也可以在审计表中包含该信息。
并查看this answer以获得更多优惠。