Como encontrar o que causou erros relatados em um rastreamento do profiler do SQL Server?
-
03-07-2019 - |
Pergunta
Eu estava executando um rastreamento em um Sql Server 2005 usando o profiler e necessidade de descobrir o que está causando os erros relatados.
Eu usei o "blank" modelo, e selecionado todas as colunas dos seguintes eventos:
- Excepção
- Troca de derramamento Evento
- Avisos de Execução
- Avisos de hash
- Faltando Coluna Estatísticas
- Faltando predicado
notei um número destes erros na coluna "TextData":
- Erro: 156, gravidade: 16, estado: 0
- Erro: 208, gravidade: 16, estado: 0
Eu olhei para os erros (sintaxe incorreta, nome do objeto inválido), mas como posso saber qual o procedimento ou consulta armazenada está causando-los?
Solução
Não se preocupe com os erros 208. 208 é "objeto não encontrado". Profiler pega estes devido ao que é chamado de 'adiada a resolução de nomes'.
Leve o procedimento a seguir.
CREATE PROCEDURE Demo AS
CREATE TABLE #Temp (ID int)
INSERT INTO #Temp VALUES (1)
SELECT ID FROM #Temp
GO
Isso proc irá correr bem sem erros no entanto, se você tiver um rastreamento do profiler execução, você verá um ou dois casos de erro 208. É porque a tabela #temp não existe quando os começos proc, que é quando o código é analisado e ligado. O processo de ligação para os objectos subjacentes falhar.
Uma vez que a criação de pistas de mesa, as outras declarações se recompilados e vinculado à tabela correta e executar sem erro.
O único lugar que você vai ver que erro de resolução diferido está em profiler.
Outras dicas
no SQL 2005 você não pode. você vai ter que executar o rastreamento do profiler do SQL: StmtStarting, SQL:. StmtCompleted, mensagem de erro do usuário e eventos de exceção com texto, transactionId, EventSequence e colunas otehr você precisa para obter uma imagem do que está acontecendo