SET STATISTICS XML ON;
DECLARE @x XML = (SELECT 'hi' "@id" FOR XML PATH ('this'), root ('xml'));
A conversão de tipo na expressão (CONVERT_IMPLICIT(xml,[Expr1001],0)) pode afetar "CardinalityEstimate" na escolha do plano de consulta
Por que uma conversão está acontecendo? Achei que isso FOR XML
fazia com que o resultado já fosse do XML
tipo. Se este aviso pode/deve ser ignorado, como faço para impedir que o aviso apareça no plano de execução (para que, quando eu depurar uma consulta maior com um aviso semelhante, isso não me distraia dos problemas reais)?
O tipo de retorno da
FOR XML PATH
expressão éNVARCHAR(MAX)
, nãoXML
.Eu estava confuso com o fato de que o SSMS renderiza qualquer coluna nomeada
XML_F52E2B61-18A1-11d1-B105-00805F49916B
como se tivesse oXML
tipo de dados. Se eu executar o seguinte comando, obtenho uma célula de resultado XML clicável no SSMS:Consegui descobrir o tipo real fazendo o SQL Server cuspir um erro de conversão de tipo:
Para corrigir o aviso completamente, basta adicionar a
TYPE
diretiva àFOR XML
cláusula: