我们正在使用 asp.net 和 sql server 开发一个 Web 应用程序。我们需要对应用程序进行审计跟踪。据我了解,审计跟踪基本上是针对数据库上的所有插入、更新和删除的,对吗?现在解决这个问题的方法是我在数据库中有一个审计跟踪表,在每次插入、更新或删除被触发后填充(在 DAL 中手动编写脚本)。但是,任何直接从 SQL Management Studio 触发的数据库更改都不会被记录(原因很明显:P)。
为了满足这一点,我可以创建一个触发器,它会处理所有事情。我也做了一些谷歌搜索,发现 SQL Server 有能力做审计跟踪。然而,使用触发器的问题是我不会获得登录网站的用户信息。我会得到 sql 用户,但我对此不屑一顾,我担心网站用户。
我想出的一个解决方案是 a) 从我的 Web 应用程序中获得审计跟踪,并且还设置了触发器。在审计报告中,我只是显示了来自 web 应用程序的审计日志和来自 sql server 的审计日志。这种方法的明显问题:开销。在每次数据库更改时写入两组不同的表。
b)我在每个数据库表上都有一个名为 UserId 的列。然后我创建一个触发器来捕获所有数据库更改。我在我更改的每个表(插入、更新、删除)上传递这个 userId,并从触发器中获取这个 id。明显的挫折:每个表中不必要的用户 ID 列
我为这篇长文道歉。基本上,我需要一个审计日志来记录所有数据库更改(包括直接入侵数据库),但同时为我提供从 Web 应用程序进行的那些数据库更改的用户登录信息。
将不胜感激在这方面的任何意见。
非常感谢
谢树