我使用扩展事件完成的存储过程
Stored Procedures completed by me using Extended Events
我使用名为“我完成的过程”的 SQL Server Profiler 跟踪模板,其中包括此文本过滤器:%@UserID=123%。
我们网站几乎所有的存储过程运行都包含一个@UserID参数,所以我可以点开看看对数据库的影响。并且它忽略了其他网站用户的所有存储过程 运行。非常有用!
如何在扩展事件中创建相同的东西?
答案(来自下面的大卫)是
CREATE EVENT SESSION XE_ProcsRunByMe
ON SERVER
ADD EVENT sqlserver.rpc_completed (WHERE sqlserver.like_i_sql_unicode_string(statement,N'%@UserID=123%'))
在会话中 window:
在左侧的列表中转到 Events
,在 Event library:
下有 rpc_
个事件。
对于用户,在同一个 window 中转到右侧的 Configure
,然后 select 左侧 Selected events:
下的实际事件(如果列出了多个,因为每个都必须设置),然后在右边选择 Filter (predicate)
,并在 Field
下检查适当的值(我现在无法检查,我以前在我的机器上使用 sqlserver.client_hostname
并减少 sqlserver.database_name
上的足迹。如果根据 SQL 服务器用户映射,用户不相同,则改为过滤语句(列表中应该有类似 statement
的内容,但可能取决于 SQL 服务器版本).
我使用名为“我完成的过程”的 SQL Server Profiler 跟踪模板,其中包括此文本过滤器:%@UserID=123%。
我们网站几乎所有的存储过程运行都包含一个@UserID参数,所以我可以点开看看对数据库的影响。并且它忽略了其他网站用户的所有存储过程 运行。非常有用!
如何在扩展事件中创建相同的东西?
答案(来自下面的大卫)是
CREATE EVENT SESSION XE_ProcsRunByMe
ON SERVER
ADD EVENT sqlserver.rpc_completed (WHERE sqlserver.like_i_sql_unicode_string(statement,N'%@UserID=123%'))
在会话中 window:
在左侧的列表中转到 Events
,在 Event library:
下有 rpc_
个事件。
对于用户,在同一个 window 中转到右侧的 Configure
,然后 select 左侧 Selected events:
下的实际事件(如果列出了多个,因为每个都必须设置),然后在右边选择 Filter (predicate)
,并在 Field
下检查适当的值(我现在无法检查,我以前在我的机器上使用 sqlserver.client_hostname
并减少 sqlserver.database_name
上的足迹。如果根据 SQL 服务器用户映射,用户不相同,则改为过滤语句(列表中应该有类似 statement
的内容,但可能取决于 SQL 服务器版本).