如何在 SQL Server 2008 R2 中按数据库过滤扩展事件

Jus*_*ing 2 sql-server sql-server-2008-r2 extended-events

如果我在 SQL Server 2008 R2 中执行这样的扩展事件会话:

CREATE EVENT SESSION [Query tracing] ON SERVER 
ADD EVENT sqlserver.rpc_completed 
    (
        ACTION(sqlserver.sql_text)
        WHERE sqlsever.database_name = 'master'
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

消息 25706,级别 16,状态 8,第 8 行
找不到事件属性或谓词源“sqlsever.database_name”。

同样发生在 WHERE sqlsever.database_id = DB_ID('master')

有没有办法按数据库过滤?

Tho*_*ger 7

有两件事是问题所在。

database_nameSQL Server 2008 R2 中没有操作(它是在 SQL Server 2012 中引入的):

select
    action_name = 
        p.name + '.' + o.name
from sys.dm_xe_objects o
inner join sys.dm_xe_packages p
on o.package_guid = p.guid
where o.object_type = 'action'
and o.name like '%database%';
Run Code Online (Sandbox Code Playgroud)

输出是:

action_name
-----------
sqlserver.database_id
sqlserver.database_context
Run Code Online (Sandbox Code Playgroud)

但是有sqlserver.database_id。第二个问题是你的尝试database_id没有成功,因为你有一个错字(你有“sqlsever”,缺少一个“r”)。