Considere a seguinte mensagem de erro.
Msg 207 Nível 16 Estado 1 Linha 7
Nome de coluna inválido 'FOO'.
Por causa de como eu o acionei , sei que foi um erro de tempo de análise/compilação.
Suponha que eu estivesse executando um script longo que não fazia parte de um procedimento e recebi a mesma mensagem de erro. O que nesta mensagem de erro me diz que o erro ocorreu em tempo de análise/compilação, e não em tempo de execução?
CREATE TABLE Department_History
(
DepartmentNumber INT
);
GO
ALTER TABLE Department_History ADD FOO INT;
-- This is fine and shows FOO.
SELECT * FROM Department_History;
-- When uncommented, this fails at parse time.
INSERT Department_History (DepartmentNumber, FOO) VALUES (4, 5), (6, 7), (8, 9);
O erro não está acontecendo no momento da análise. Será bem-sucedido se você executar o Parse (Ctrl + F5) na sua seleção de código.
Em vez disso, o problema está na etapa Bind.
Vou pegar emprestado este gráfico da postagem do blog de Paul White Query Optimizer Deep Dive - Parte 1
Quanto à pergunta, não acredito que o servidor SQL apareça (facilmente) em qual etapa o erro ocorreu.
Capturei a pilha de chamadas do erro com Extended Events e usei SQLCallStackResolver para traduzir isso
Você pode ver que pouco antes da exceção, ele tentou
BindTree
.