我需要捕获写操作(任何更改数据的查询),但仅限于两个特定的表。这可以在Sql Profiler中配置吗?如果是这样,怎么样?我希望找到一个不涉及对文本进行过滤的解决方案。
答案 0 :(得分:6)
根据对其他答案的评论,根据需要使用SQL事件探查器进行以下设置
Event Selection:
-Stored Procedures
- SP: StmtStarting
-TSQL
- SQL:StmtStarting
Column Filters
-TextData (LIKE)
- "insert %"
- "update %"
- "delete %"
我不想过滤文本数据,但这是获得我想要的唯一方法。
答案 1 :(得分:0)
使用更改数据捕获,详细说明here
如果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'
然后将数据放入历史表
答案 2 :(得分:0)
我同意其他答案,CDC是要走的路(只要你在企业版上)
使用分析器在技术上是可行的,但只是勉强。
首先捕获TSQL:StmtStarting,TSQL:StmtCompleting
然后,您必须导出列表以进行进一步分析。您必须编写某种类型的分析器来过滤掉不符合标准的语句。如果您的系统获得临时查询或者系统生成各种各样的查询,那么分析列表很快就会变得非常毛茸茸。
还有一个问题是运行分析器有很大的开销,如果你想在很长一段时间内获得这些数字,你会很快将系统资源压缩到大多数生产系统的不可接受的水平。
简而言之,尝试以这种方式使用探查器可能会很有趣,但不是在“现实世界”场景中。
这来自一个喜欢看割草机比赛的人。