sql-server – 如何保持对表的更改的审计/历史记录

前端之家收集整理的这篇文章主要介绍了sql-server – 如何保持对表的更改的审计/历史记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我被要求创建一个简单的DataGrid样式的应用程序来编辑数据库的单个表,这很简单.但是请求的一部分是创建一个审计跟踪,所做的更改,谁制作了他们,以及日期/时间.

你怎么可以解决这种事情?

(我将在VS2008中使用C#,ADO.NET连接到sql Server 2005,WPF和Xceed的DataGrid,如果有任何区别).

解决方法

创建审计跟踪有两种常见的方法.

>编写数据访问层.
>在数据库本身使用触发器.

两者都有优缺点.有些人比较喜欢一个.通常情况下,应用程序的类型和数据库使用的类型可以预期.

如果你在你的DA层做到这一点,那么你呢您只需要为保存到数据库的每个方法添加代码,也可以保存更改的日志.如果您正在使用存储过程,则此审核代码可能位于您的DA层代码中,甚至在数据库中的存储过程中.基本上的前提是一样的,任何时候你对数据库进行更改,记录更改.

如果要下拉触发器路由,您可以为每个表写入自定义触发器,或者在多个表上使用更一般的触发器.查看this article关于审计触发器.这可以通过在更改时触发触发器,并且触发器记录更改.请记住,如果要审核SELECT语句,则不能使用触发器,您必须在代码/存储过程审计中执行此操作.还值得一提的是,根据您的数据库,触发器可能在任何情况下都不会触发.例如,大多数数据库在TRUNCATE语句期间不触发触发器.检查您的触发器是否在需要审核的情况下被触发.

或者,您也可以查看使用service broker在专用机器上进行异步审核.这更复杂,需要一些配置才能设置.

您以何种方式执行此操作,您需要确定审核日志将执行的格式.通常你会把这个日志保存在你的数据库中,但是你可以把它保存在一个日志文件中,或是适合你的要求.您可以使用单个审核表来记录所有更改,或者您可以在每个主表的审核表中进行审核.对于大规模实现,您甚至可以考虑将审核表放在一个完全独立的数据库中.如果您登录到表中,通常有一个“更改类型”字段,指示被审核的更改是否是插入,更新或删除的更改方式,以及已更改的数据,进行更改的用户和日期/时间改变了.不要忘记包含更新样式更改的旧数据和新数据.

猜你在找的MsSQL相关文章