如何在不直接在数据库上使用fn_dblog或fn_dump_dblog的情况下创建sql事务审计软件



我正在开发sql事务审计软件

最初,我在数据库上使用fndblog读取sql事务,并按一定的时间间隔将其写入文件,但后来我发现在生产数据库上使用fn_dblog是有风险的

因此,请建议我从生产数据库中获取数据的任何其他替代方法

注意-我已经尝试从备份文件(.bak(中读取事务来获取sql事务历史记录(在我的系统上使用fn_dblog,而不是在数据库上(,但是这对我没有帮助(因为它不包含所有交易历史(

fn_dblog()是一个未记录的SQL Server函数,因此明智的做法是小心使用它。

您关于如何审计事务的问题实际上取决于您想要审计的。真的是发生的每一笔交易吗?或者,它是特定类型的事务,如DDL和DML操作吗?有几个选项取决于这个问题的答案,你的具体商业案例,等等。

  • 变更数据捕获于2008年推出,捕获插入、更新和删除活动。在许多情况下,这就是人们想要编辑的内容。哪个用户(通常来自应用程序(编辑了数据库中的数据
  • DDL和DML触发器可以创建为在特定事件发生时触发。对于DML,这包括INSERT、UPDATE、DELETE等操作。您可以创建触发器,在操作发生后将其记录为审核功能。这些类型的触发器可能会导致性能问题,所以一定要仔细阅读它们。我会从Aaron Bertrand关于他们的博客开始。DDL触发器依赖于某些DDL事件,如创建和删除数据库、创建加密、更改索引、创建用户等
  • SQL Server审核是创建服务器审核的内置机制,其中可以包含服务器级别事件的服务器审核规范和数据库级别事件的数据库审核规范。已审核的事件可以写入事件日志或审核文件。请注意,与变更数据捕获的一大区别在于,它不像CDC那样以干净的关系格式存储
  • 更改您的应用程序。这将是应用程序和数据库设计的更改,但这种方法通常是实现的。本质上,每次对数据行进行更改时,都会插入一个带有时间戳和进行更改的用户的新行,而不是对其进行编辑。该记录将成为"当前真实"记录以及该记录的所有其他记录区域历史。SQL Server有使用ROWVERSION和TEMPORAL TABLES进行集成的方法
  • 使用付费选项,如Redgate、Solarwinds等

最新更新