Los errores de compilación ocurren durante el proceso de generación de un plan de ejecución. Los errores de tiempo de ejecución ocurren cuando se genera el plan y se está ejecutando.
La única forma de distinguir entre los dos es si se genera o no un plan AFAIK.
Ejemplos
/*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
Los últimos 2 generan exactamente el mismo error, aunque uno es un error de tiempo de compilación y el otro un error de tiempo de ejecución.