Capturou o gráfico XML para um determinado impasse envolvendo alguns sps grandes/de várias consultas. No entanto, não tenho certeza de como interpretar a linha, stmtstart, stmtend do elemento frame para determinar qual linha do sproc TSQL encontrou o impasse. A linha 214 não parece estar alinhada com nenhuma consulta no editor do SSMS, mas não tenho certeza de como o mecanismo normaliza o sproc TSQL ao numerar a linha. Como você resolve o número da linha capturada com o número da linha conforme exibido na definição do SSMS sproc?
<frame procname="MyDB.dbo.MyRecordsCleanup" line="214" stmtstart="19333" stmtend="19435" sqlhandle="0x030005007c47eb4c669a8d004eaf000001000000000000000000000000000000000000000000000000000000">
exec sp_executesql @NSQL, N'@ARG1 int', @ARG1 = @MyArg1
</frame>
O número da linha e os deslocamentos da instrução no relatório de conflito são baseados no texto real do procedimento armazenado. O script SSMS adicionará linhas adicionais para sticky
QUOTED_IDENTIFIER
eANSI_NULLS
, adicionará comentários de acordo com as opções de script (Ferramentas-->Opções-->SQL Server Object Explorer-->Scripting) e alterará o texto para incluir identificadores ou corrigir o nome de um renomeado procedimento. Como resultado, os deslocamentos e os números de linha no procedimento com script podem diferir do texto real.Para evitar esse comportamento, recupere a definição de proc real de
sys.sql_modules
ouOBJECT_DEFINITION
(de acordo com o comentário de @SolomonRutzky) e copie/cole o resultado em uma nova janela de consulta para análise com esta consulta:Observação O SSMS pode truncar o resultado de procedimentos grandes de acordo com as opções de resultado da consulta. Certifique-se de que o máximo de caracteres recuperados para resultados de grade ou texto seja maior que o tamanho do seu processo. Isso é especificado em Ferramentas-->Opções-->Resultados da Consulta-->SQL Server. Para obter os resultados da grade, verifique se a opção Reter CR/LF ao copiar ou salvar está marcada, pois está desativada por padrão.
Outra opção para recuperar o texto proc com
sp_helptext
resultados para texto, tomando cuidado para que o máximo de caracteres recuperados seja maior que a linha mais longa.