Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Differenza tra errori di compilazione ed errori di runtime in SQL Server?

errori di compilazione si verificano durante il processo di generazione di un piano di esecuzione. Si verificano errori di runtime durante la generazione e l'esecuzione del piano.

L'unico modo per distinguere tra i due è se viene generato o meno un piano AFAIK.

Esempi

/*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

Gli ultimi 2 generano esattamente lo stesso errore anche se uno è un errore in fase di compilazione e l'altro un errore in fase di esecuzione.