私は次のように述べています。
-- 1st
DECLARE @AuditParameters XML = (
SELECT
1 AS AccountID,
2 AS CategoryID,
3 AS CategoryAttributeID,
'4' AS SyncBatchGUID
FOR XML PATH(N'Parameters'), ELEMENTS XSINIL
)
-
-- 2nd
DECLARE @AuditParameters XML = convert(xml, (
SELECT
1 AS AccountID,
2 AS CategoryID,
3 AS CategoryAttributeID,
'4' AS SyncBatchGUID
FOR XML PATH(N'Parameters'), ELEMENTS XSINIL
))
どちらのステートメントも同じ実行プランになりますが、警告メッセージが表示されます
式の型変換(CONVERT_IMPLICIT(xml、[Expr1004]、0))は、クエリプランの選択で "CardinalityEstimate"に影響を与える可能性があります。
2つ目のステートメントをXMLに変換しようとしましたが、同じ警告メッセージが表示されます。
上記のステートメントのこの警告メッセージを取り除くにはどうすればよいですか?
ありがとうございました
FOR XMLクエリで TYPEディレクティブを使用する
SQL Serverによる xml(Transact-SQL) のサポートにより、オプションで、FOR XMLクエリの結果がxmlデータ型として返されるように指定できます。 TYPEディレクティブ。
-- 1st
DECLARE @AuditParameters XML = (
SELECT
1 AS AccountID,
2 AS CategoryID,
3 AS CategoryAttributeID,
'4' AS SyncBatchGUID
FOR XML PATH(N'Parameters'), ELEMENTS XSINIL,Type
)
TYPE
を追加すると、文字列ではなく内部クエリからXML
が返されます
DECLARE @AuditParameters XML = (
SELECT
1 AS AccountID,
2 AS CategoryID,
3 AS CategoryAttributeID,
'4' AS SyncBatchGUID
FOR XML PATH(N'Parameters'), ELEMENTS XSINIL, TYPE
)