我第一次在托管实例(不是Azure SQL DB)中设置扩展事件跟踪。
这些是我仔细遵循的步骤:
- 在我的数据库上创建了一个主密钥。
- 使用正确的共享访问签名创建了数据库范围凭据。
- 创建并开始跟踪。这有效,并且一切都按预期进行了跟踪。
现在,我正在尝试使用 T-SQL 查询 XEL 文件:
SELECT event_data FROM sys.fn_xe_file_target_read_file (N'https://whatever.blob.core.windows.net/xevents/MyTrace_132410674100570000.xel',NULL, NULL, NULL);
但是,我得到两种不同的行为:
- 来自 SSMS:我只得到零行,没有显示错误或消息。
- 从 Azure DataStudio:我收到以下错误消息
消息 300,级别 14,状态 1,第 1 行查看服务器状态权限在对象“服务器”、数据库“主服务器”上被拒绝。Msg 297, Level 16, State 1, Line 1 用户无权执行此操作。
一些事实:
- 我可以使用 Azure 存储资源管理器下载 XEL 文件。
- 我已经检查了 XEL 文件的完整路径,它是正确的。我可以使用浏览器直接下载文件。
- 容器的访问级别为 Public。
- 我尝试过使用不同的文件(运行和停止的跟踪,所有这些都带有数据)。
- XEL 文件充满了数据,因为我在本地查询它们并且可以使用 SSMS 打开它们。
- 我真的不认为缺少密钥或范围凭据。否则,追踪将不起作用。无论如何,我放弃了一切,从头开始,行为没有改变。
- 我所有的测试都是使用托管实例管理员帐户进行的。
所以...
- 托管实例真的支持读取 XEL 文件吗?
- 关于如何使用 sys.fn_xe_file_target_read_file 函数访问文件有什么问题吗?
我不知道这是否是正确的解决方案,但这是对我有用的解决方法,以防有人面临同样的问题。
我能够使用查询
托管实例似乎不支持使用此功能(或者我无法找到方法)。
希望这可以帮助某人。