我们有一个winform应用程序,所有SQL都是内联的,不幸的是没有使用存储过程。
保持对SQL表执行的操作(INSERT,UPDATE或DELETE)的跟踪的最佳方法是什么,监视并捕获单个表中正在进行的活动的记录 。
我知道SQL服务器分析器是可用的,但理想情况下我不想让分析器一直运行,我需要的是在幕后运行并捕获一个表的所有活动。
我想过使用触发器,但使用它有一些缺点,所以我想知道是否有其他选择?
谢谢
答案 0 :(得分:2)
如果你正在使用SQL Server 2008(以及更高版本),那么Change Data Capture听起来是一个很好的起点:
http://msdn.microsoft.com/en-us/library/bb522489(v=sql.105).aspx
答案 1 :(得分:0)
如果您使用的是ORACLE,则可以使用此语句审核表(如果使用fireid 是进行更新的用户的名称):
AUDIT SELECT TABLE,UPDATE TABLE,INSERT TABLE,DELETE TABLE BY fireid BY ACCESS;
结果将存储在SYS.AUD $表
中(如果您正在使用其他数据库,只需搜索文档以审核DML语句。)
SQL SERVER:有一个名为“SQL AUDIT”的功能这是你要找的吗? http://www.bradmcgehee.com/2010/03/an-introduction-to-sql-server-2008-audit/
答案 2 :(得分:0)
有几种方法。如果您只想在Code中执行此操作(取决于您的程序) 您只需将命令添加到列表中并将其写入文件即可。
如果您正在使用EntityFrameWork,那么我会记录数据更改。使用EF时,使用存储过程确实是最好的。
您的代码或项目示例会有所帮助。 TransactionLogs已经捕获了这些信息。
显然你使用Sql Server这些ORACLE人非常嫉妒。
另外,请看一下使用DataSourceViews,它是一种告诉服务器发生了什么的方法。
答案 3 :(得分:0)
我认为SQL Server CHANGE TRACKING TeEchinique最适合您的要求。