Kompilierungsfehler treten während des Generierens eines Ausführungsplans auf. Laufzeitfehler treten auf, wenn der Plan generiert und ausgeführt wird.
Die einzige Möglichkeit, zwischen den beiden zu unterscheiden, ist, ob ein Plan AFAIK generiert wird oder nicht.
Beispiele
/*Parse Error*/
SELEC * FROM master..spt_values
GO
/*Bind Error*/
SELECT * FROM master..spt_values_
GO
/*Compile time - constant folding error*/
SELECT LOG(0)
FROM master..spt_values
GO
/*Runtime Error*/
DECLARE @Val int = 0
SELECT LOG(@Val)
FROM master..spt_values
Die letzten 2 lösen genau denselben Fehler aus, obwohl einer ein Kompilierzeitfehler und der andere ein Laufzeitfehler ist.