È corretto fare quanto segue?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
No. Ciò rilascerà la tabella solo se contiene righe (e genererà un errore se la tabella non esiste).
Invece, per un tavolo permanente puoi utilizzare
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
Oppure, per un tavolo temporaneo puoi utilizzare
IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
DROP TABLE #TempTableName;
SQL Server 2016+ ha un modo migliore, usando DROP TABLE IF EXISTS …
. Vedi la risposta di @Jovan.