我正在捕获 SQL 服务器中的扩展事件。尝试分析跟踪 - 将事件数据转换为 xml 出现错误:
消息 9420,级别 16,状态 1,第 28 行
XML 解析:第 1 行,字符 731,非法 xml 字符
排查问题,发现sql_text action 值中有一个ascii 数字3 的字符。该值由客户端以动态 SQL 的形式传递。这在这里几乎不用担心。问题是 XE 无法处理 sql_text 中的奇怪字符。
这就是我获取导致问题的数据的方式:
declare @data nvarchar(max)
declare @id int
SET NOCOUNT ON
if object_id('tempdb.dbo.#xerrors') is null --drop table #xerrors
begin
select CAST(null as XML) as xml_event_data, *
into #xerrors
from sys.fn_xe_file_target_read_file
(
'...\Log\error_*.xet',
'...\Log\error_*.xem',
null,
null
)
alter table #xerrors
add id int identity(1,1) primary key not null
end
while exists(select …
Run Code Online (Sandbox Code Playgroud) 我想和你分享这个简单的片段(回答我自己的问题),我也很好奇你如何控制你的 SQL 服务器备份。