Sql server 无触发器的SQLServer2005审计
我想在我的应用程序中实现审计。我不想在整个应用程序中添加样板代码,而且使用触发器会对性能产生影响,这是无法做到的,因为处理的大多数数据都是实时显示的Sql server 无触发器的SQLServer2005审计,sql-server,triggers,boilerplate,auditing,Sql Server,Triggers,Boilerplate,Auditing,我想在我的应用程序中实现审计。我不想在整个应用程序中添加样板代码,而且使用触发器会对性能产生影响,这是无法做到的,因为处理的大多数数据都是实时显示的 有没有其他办法呢。我目前正在使用SQL server 2005。如果您使用的是NHibernate,则可以使用NHibernate事件侦听器。 如果您使用EntityLite,则可以覆盖DataService插入、更新和删除方法。 如果您使用的是实体框架,您可以使用描述的分析技术 如果您使用的是原始ADO.NET,那么它会更复杂,也许您可以编写一个
有没有其他办法呢。我目前正在使用SQL server 2005。如果您使用的是NHibernate,则可以使用NHibernate事件侦听器。 如果您使用EntityLite,则可以覆盖DataService插入、更新和删除方法。 如果您使用的是实体框架,您可以使用描述的分析技术
如果您使用的是原始ADO.NET,那么它会更复杂,也许您可以编写一个ADO.NET提供程序包装,但这项工作太多了。我找到了以下关于此主题的文章:
更简单的方法是创建一个通用的审计过程,并在必要时使用它来记录值得审计的事件。SQL更改数据捕获(CDC)是否适合您?需要在数据库和要跟踪的每个表上启用它,但它会自动跟踪一个单独表中的所有更改。在SQL server 2005和下一版本中有另一种审计方法,作为触发器的替代方法:对任何DML操作使用OUTPUT子句。 您可以参考StackOverflow和MSDN了解如何使用它。我在DML操作时实现了PUTPUT子句,并将数据插入Audittrail表。关于output子句最好的一点是,它们可以访问“inserted”和“deleted”表,比如触发器 否则,请尝试SQL server的ChangeTracking功能
谢谢大家! “使用触发器会对性能产生影响”-我能想到的任何解决方案都会对性能产生一些影响-您正在移动更多的数据,这些数据需要存储。您是否实施了触发器并测量了对性能的不可接受的影响?如果是这样的话,您要处理的是哪种类型的数据量,哪些是可以接受的?是的,它对性能有很大的影响,因为数据非常巨大,一次调用或多次调用可以达到100000~如果您只想审核少数表上的更改,您可以始终隐藏表(重命名?),并编写自己的过程来提供对这些表的访问,您可以在其中添加审核操作。您提到的文章使用的是较新版本的visual studio。我想在SQL SERVER 2005中进行审核。但是,这无法帮助我记录在任何值中发生的更改所涉及的过程。是否有任何方法可以记录所涉及的流程和其中所做的更改。您使用的是什么数据访问技术?存储过程和NHibernate