2011-09-29 173 views
1

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

但是,在写入服务层并将所有应用程序迁移之前,需要修复一些问题。

因此,而不是进行更改,并希望他们不破4级写得很糟糕的应用程序中的任何一个(有没有办法快速测试所有功能)我的解决办法是启动审计数据库

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

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

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

回答

2

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

如果你的应用程序的性质,意味着你可以从CURRENT_USER和APP_NAME获取用户信息和/或应用信息(),你可以包括审核表的信息了。

并检查了this answer更多的善良。

+0

有人回来这个问题它是一个风滚草这么久真的很感动。 –