SQL 服务器:读取扩展事件的 XML 个文件
SQL Server: reading XML files for extended events
我已将 SQL 服务器设置为通过扩展事件以 XML 文件的形式报告错误。
现在,我想阅读并展示它们。
我做错了什么,有些数据没有按预期显示。
我尽可能地简化了,这是我所做的:
declare @xmlColumn xml = '<event name="error_reported" package="sqlserver" timestamp="2015-08-25T14:22:24.576Z">
<data name="error_number">
<value>207</value>
</data>
<action name="username" package="sqlserver">
<value>John</value>
</action>
</event>'
select @xmlColumn.value('(/event/@timestamp)[1]','datetime2'),
@xmlColumn.value('(/event/data[@name="error_number"]/value)[1]', 'int'),
@xmlColumn.value('(/event/action[@name="username"]/text)[1]', 'varchar(99)')
输出是:
2015-08-25 14:22:24.5760000 207 NULL
我预计:
2015-08-25 14:22:24.5760000 207 John
我做错了什么?
您必须阅读 "value" 下面的节点 "action":
select @xmlColumn.value('(/event/@timestamp)[1]','datetime2'),
@xmlColumn.value('(/event/data[@name="error_number"]/value)[1]', 'int'),
@xmlColumn.value('(/event/action[@name="username"]/value)[1]', 'varchar(99)')
我已将 SQL 服务器设置为通过扩展事件以 XML 文件的形式报告错误。 现在,我想阅读并展示它们。 我做错了什么,有些数据没有按预期显示。 我尽可能地简化了,这是我所做的:
declare @xmlColumn xml = '<event name="error_reported" package="sqlserver" timestamp="2015-08-25T14:22:24.576Z">
<data name="error_number">
<value>207</value>
</data>
<action name="username" package="sqlserver">
<value>John</value>
</action>
</event>'
select @xmlColumn.value('(/event/@timestamp)[1]','datetime2'),
@xmlColumn.value('(/event/data[@name="error_number"]/value)[1]', 'int'),
@xmlColumn.value('(/event/action[@name="username"]/text)[1]', 'varchar(99)')
输出是:
2015-08-25 14:22:24.5760000 207 NULL
我预计:
2015-08-25 14:22:24.5760000 207 John
我做错了什么?
您必须阅读 "value" 下面的节点 "action":
select @xmlColumn.value('(/event/@timestamp)[1]','datetime2'),
@xmlColumn.value('(/event/data[@name="error_number"]/value)[1]', 'int'),
@xmlColumn.value('(/event/action[@name="username"]/value)[1]', 'varchar(99)')