C# 如何捕获和记录SQL表的活动

C# 如何捕获和记录SQL表的活动,c#,winforms,sql-server-2008-r2,C#,Winforms,Sql Server 2008 R2,我们有一个winform应用程序,所有SQL都是内联的,不幸的是没有使用存储过程 跟踪对SQL表执行的操作(插入、更新或删除)的最佳方法是什么,监视并捕获单个表中正在进行的活动的记录 我知道SQL server profiler是可用的,但理想情况下我不想让profiler一直运行,我需要的是在后台运行一些东西,并捕获一个表的所有活动 我曾想过使用触发器,但使用它有一些缺点,所以我想知道是否还有其他选择 谢谢如果您使用的是ORACLE,则可以使用此语句(如果是fireid 是执行更新的用户的名称

我们有一个winform应用程序,所有SQL都是内联的,不幸的是没有使用存储过程

跟踪对SQL表执行的操作(插入、更新或删除)的最佳方法是什么,监视并捕获单个表中正在进行的活动的记录

我知道SQL server profiler是可用的,但理想情况下我不想让profiler一直运行,我需要的是在后台运行一些东西,并捕获一个表的所有活动

我曾想过使用触发器,但使用它有一些缺点,所以我想知道是否还有其他选择


谢谢

如果您使用的是ORACLE,则可以使用此语句(如果是fireid 是执行更新的用户的名称):

按fireid按ACCESS审核选择表、更新表、插入表、删除表

结果将存储在SYS.AUD$表中

(如果您正在使用另一个数据库,只需搜索文档以审核DML语句。)


SQL SERVER:有一个叫做“SQL审计”的功能,这就是您想要的吗?

如果您使用的是SQL Server 2008(及更高版本),更改数据捕获听起来是一个很好的起点:


有几种方法。如果您只想在代码中完成(取决于您的程序) 您只需将命令添加到列表并将其写入文件即可

如果您使用的是EntityFrameWork,那么我将记录数据更改。当使用EF时,使用存储过程确实是最好的

您的代码或项目的示例会有所帮助。TransactionLogs已经捕获了该信息

很明显,你使用Sql Server时,那些ORACLE的人非常嫉妒


还可以看看使用DataSourceView,这是一种判断服务器运行状况的方法。

我认为SQL server更改跟踪技术最适合您的要求。

不幸的是,它不是Oracle。这是MS SQL 2008 R2SQL SERVER:有一个叫做“SQL审核”的功能,这就是您要找的吗?查看此URL:请注意,更改数据捕获是Enterprise edition的一项功能。谢谢,这正是我要寻找的。根据您想要捕获的内容,触发器可能是最容易实现的选项。你能解释一下你到底想捕获什么,以及你担心的具体缺点吗?