我正在将插入和删除的表中的数据捕获为 xml 并将其保存到审核日志中,但由于某种原因,开始为空值生成空元素。这似乎与文档相矛盾,该文档说:
ELEMENTS 指令构造 XML,其中每个列值映射到 XML 中的一个元素。如果列值为 NULL,则不添加任何元素。通过在 ELEMENTS 指令上指定可选的 XSINIL 参数,您可以请求也为 NULL 值创建一个元素。在这种情况下,将为每个 NULL 列值返回一个将 xsi:nil 属性设置为 TRUE 的元素。
我很确定我没有使用 XSINIL 参数,但创建的元素都是一样的。我尝试过使用生成模式;尝试 RAW、AUTO 等,但空标签仍然存在。
它是一个动态生成的查询,如下所示:
'SET @LogData =
CASE
WHEN @EventType = @Insert
THEN
(
SELECT ' + @ColumnList + '
FROM Inserted
FOR XML RAW, ELEMENTS
)
WHEN @EventType = @Delete
THEN
(
SELECT ' + @ColumnList + '
FROM Deleted Rows
FOR XML RAW, ELEMENTS
)
END;'
其中@LogData 是类型xml
,@ColumnList 是以下格式:
[Column1Name],
[Column2Name]