无法在扩展事件会话中观看实时数据

Pau*_*ams 9 sql-server extended-events sql-server-2014

我在我的 PC 上运行 SQL Server 2014 Developer Edition。我正在尝试查看 system_health 会话中的数据。在SSMS中,我已经连接到数据库,扩展了服务器/管理/扩展事件/会话。我看到 AlwaysON_health(停止)和 system_health(运行)。

当我右键单击 system_health 会话时,出现以下错误:

使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage) 找不到名为“system_health”的扩展事件会话。确保会话存在并已启动。(Microsoft SQL Server,错误:25728)

我展开 system_health 并看到目标 package0.event_file 和 package0.ring_buffer。如果我右键单击任一目标并选择“查看目标数据”,则会出现此错误:

使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage) 无法查看函数“fn_MSXe_read_event_stream”,因为它不存在或您没有权限。(Microsoft SQL Server,错误:15151)

该功能确实存在。我可以运行它:

select * from fn_MSXe_read_event_stream('system_health', 0);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到此错误:

Msg 25728, Level 16, State 10, Line 6
The Extended Events session named "system_health" could not be found. Make  sure the session exists and is started.
Run Code Online (Sandbox Code Playgroud)

我知道 system_health 会话在那里。我在会议列表中看到:

select * from sys.dm_xe_sessions

address name       name
------------------ ------------- 
0x00000001FF6510C1 system_health
Run Code Online (Sandbox Code Playgroud)

我已经用我自己的自定义事件会话尝试过这个。我也看不到他们的实时数据。

我可以从sys.dm_xe_session_targets.

为什么我不能观看任何扩展事件会话的实时数据?

(请注意,有针对此问题的Microsoft 反馈项。)

Pau*_*ams 15

我发现了问题。我的登录名的默认数据库与master数据库不同。当我将默认数据库更改为 时master,错误消失了,并且我能够在扩展事件会话中观看实时数据。

为了更改默认数据库,在 SSMS 中,我扩展了服务器、安全、登录。我右键单击了我的用户凭据。在我的用户的登录属性页面上,我将“默认数据库”更改为master. 当我在 SSMS 对象资源管理器中关闭并重新打开连接时,错误消失了。

编辑 2018-12-11

此问题反馈链接上,Karl Fasick 发布了一个可能的解决方案:

对象资源管理器未连接到主数据库...要修复 - 断开对象资源管理器 - 重新连接,但转到连接属性并明确选择主数据库。