igelr Asked: 2018-09-12 09:05:22 +0800 CST2018-09-12 09:05:22 +0800 CST 2018-09-12 09:05:22 +0800 CST SQL Profiler 是否可以仅为一个事件过滤数据列? 772 我在 MS SQL Server 中使用 SQL Profiler。我可以通过单击“列过滤器”来过滤数据列。但是这个过滤器适用于所有事件。我只想过滤 2 个事件的登录。例如,仅针对指定登录审核登录和注销,但针对所有登录审核所有其他事件。是否有可能这样做,如果可以,该怎么做。谢谢你的时间! sql-server profiler 1 个回答 Voted Best Answer GreyOrGray 2018-09-18T07:40:42+08:002018-09-18T07:40:42+08:00 不幸的是,这不能在跟踪定义中完成。定义的每个过滤器都执行 sp_trace_setfilter 过滤器,它按列对过滤器进行分组,但将所有过滤器作为一个整体应用...... 在下面的跟踪定义片段中,它最终分组如下: (DatabaseId = 5 OR DatabaseID = 6) AND (DatabaseId <> 1 AND DatabaseID <> 0) AND (Login like User1 OR Login like User2) -- Set the Filters declare @intfilter int declare @bigintfilter bigint /******Filter by database ID include*****/ SET @intfilter = 5 exec sp_trace_setfilter @TraceID, 3, 0, 0, @intfilter -- 3,0,0 = ColumnID, logical operator (and/or), comparison operator (0 = EQUAL, 1 = NOT EQUAL) set @intfilter = 6 exec sp_trace_setfilter @TraceID, 3, 1, 0, @intfilter /******Filter by database ID exclude*****/ SET @intfilter = 1 exec sp_trace_setfilter @TraceID, 3, 0, 1, @intfilter set @intfilter = 0 exec sp_trace_setfilter @TraceID, 3, 0, 1, @intfilter /******Filter by database Login LIKE*****/ exec sp_trace_setfilter @TraceID, 11, 0, 6, N'user1' -- 11,0,6 = ColumnID, logical operator (and/or), comparison operator (6 = LIKE) exec sp_trace_setfilter @TraceID, 11, 1, 6, N'user2' 对于实时过滤,您需要使用诸如保存到表选项之类的东西,并根据那里的输出过滤查询。
不幸的是,这不能在跟踪定义中完成。定义的每个过滤器都执行 sp_trace_setfilter 过滤器,它按列对过滤器进行分组,但将所有过滤器作为一个整体应用......
在下面的跟踪定义片段中,它最终分组如下:
(DatabaseId = 5 OR DatabaseID = 6) AND (DatabaseId <> 1 AND DatabaseID <> 0) AND (Login like User1 OR Login like User2)
对于实时过滤,您需要使用诸如保存到表选项之类的东西,并根据那里的输出过滤查询。