Sql server 2008 SQL探查器:捕获特定表的写入

Sql server 2008 SQL探查器:捕获特定表的写入,sql-server-2008,Sql Server 2008,我需要捕获写入操作(任何更改数据的查询),但只捕获两个特定表的写入操作。这可以在Sql事件探查器中配置吗?如果是,怎么做?我希望找到一种不涉及文本过滤的解决方案。使用变更数据捕获,详细解释了这一点 如果CDC不是你的选择,请考虑在表上放置一个触发器。在触发器中,从SQL Server内置函数捕获数据,如 select App_name() as 'AppName', CURRENT_USER as 'CurrentUser', HOST_ID () as 'HostID', HOST_NAME

我需要捕获写入操作(任何更改数据的查询),但只捕获两个特定表的写入操作。这可以在Sql事件探查器中配置吗?如果是,怎么做?我希望找到一种不涉及文本过滤的解决方案。

使用变更数据捕获,详细解释了这一点

如果CDC不是你的选择,请考虑在表上放置一个触发器。在触发器中,从SQL Server内置函数捕获数据,如

select App_name() as 'AppName', CURRENT_USER as 'CurrentUser', HOST_ID () as 'HostID', HOST_NAME () as 'HostName', SESSION_USER as 'SessionUser', SYSTEM_USER as 'SystemUser'

然后将数据放入历史记录表中

我同意另一个答案,即CDC是解决问题的方法(只要您使用企业版)

使用探查器在技术上是可行的,但几乎没有

您可以从捕获TSQL:StmtStarting、TSQL:StmtCompleting开始

然后,您必须导出列表以进行进一步分析。您必须编写某种类型的分析器来过滤不符合条件的语句。如果您的系统得到特别的查询,或者被绑定到一个生成大量查询的系统,那么分析列表很快就会变得复杂

还有一个问题是,运行探查器会带来很大的开销,如果您想在很长一段时间内获得这些数字,您可能会很快将系统资源压到大多数生产系统无法接受的水平

简言之,以这种方式尝试使用profiler可能会很有趣,但在“真实世界”场景中则不然


这来自一个喜欢看割草机比赛的家伙。

根据对对方答案的评论,在下面的设置中使用SQL Profiler

Event Selection:
-Stored Procedures
  - SP: StmtStarting
-TSQL
  - SQL:StmtStarting

Column Filters
-TextData (LIKE)
 - "insert %"
 - "update %"
 - "delete %"

我不想筛选文本数据,但这是获得所需内容的唯一方法。

我需要从Sql Profiler捕获更改类型操作。我真的不在乎改变了什么,只是建立了一些连接并做了一些改变。只要你使用企业版,CDC仍然是一条路要走。(标准版上不提供)