挿入および削除されたテーブルからデータを xml としてキャプチャし、監査ログに保存していますが、何らかの理由で null 値に対して空の要素が生成され始めます。これは、次のようなドキュメントと矛盾しているようです。
ELEMENTS ディレクティブは、各列の値が XML の要素にマップされる XML を構築します。列の値が NULL の場合、要素は追加されません。ELEMENTS ディレクティブでオプションの XSINIL パラメータを指定することにより、NULL 値に対しても要素を作成するように要求できます。この場合、xsi:nil 属性が TRUE に設定された要素が、各 NULL 列値に対して返されます。
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]