コンパイル エラーは、実行計画の生成プロセス中に発生します。実行時エラーは、計画が生成されて実行されているときに発生します。
この 2 つを区別する唯一の方法は、計画が生成されているかどうかです。
例
/*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
最後の 2 つは、1 つはコンパイル時エラーで、もう 1 つは実行時エラーですが、まったく同じエラーを発生させます。