作为一名有抱负的 DBA,我最近被分配了一项任务,即为我们正在开发的一款软件实施对数据库中所有数据更改的跟踪。在尝试了微软的变更数据捕获方法后,我开始研究其他一些解决方案。我们计划将我们的产品作为托管解决方案进行分发,并且希望进行无限制安装以实现最大的可扩展性。我研究了 IBM 的 Guardium 以及 SoftTree 的 DB Audit。我很好奇是否有人有他们过去可能使用过的解决方案,或者可能有任何建议或方法来实现对数据更改的完整且当然具有成本效益的审计。
答案1
我使用 Idera SQL 合规性管理器。它运行良好,使用服务器端跟踪并将跟踪文件发送到中央数据库服务器,还具有防篡改哈希功能。它还非常易于配置,因此您可以选择要审计的内容,并且具有 SSRS 的出色报告。
答案2
我们使用 Guardium。这本质上是一个数据包嗅探器加上一个直接安装在数据库服务器上的软件,以防有人在 RDP 进入数据库服务器时运行任何程序。
答案3
另一个可能感兴趣的产品是 OmniAudit: http://www.krell-software.com/omniaudit/
它使用触发器,但除非修改原始应用程序以包含所有更改的日志记录,否则留给您的选项并不多。
答案4
SSMS 中还有一个审计功能 - SQL Server 审计。它提供服务器级和数据库级审计、预定义组和活动,并审计 DDL 和 DML 更改。它还可以审计审计的更改。为 INSERT、UPDATE、DELETE、SELECT、REFERENCES 和 EXECUTE 语句设置审计非常精细,可以为每个语句、特定用户和对象单独指定
“所有版本的 SQL Server 都支持服务器级别审计。数据库级别审计仅限于企业版、开发版和评估版”1
但是,有一个缺点——UPDATE 语句的捕获不完整。捕获的信息不表明更改了哪些记录和列,也不显示旧值和新值。SQL Server 变更数据捕获提供有关 UPDATE 的更准确信息,因为它清楚地表明了更改的内容和方式