Правильно ли делать следующее?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
Нет. Это приведет к удалению таблицы, только если она содержит какие-либо строки (и вызовет ошибку, если таблица не существует).
Вместо этого для постоянного стола вы можете использовать
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
Или для временной таблицы вы можете использовать
IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
DROP TABLE #T;
SQL Server 2016+ имеет лучший способ, используя DROP TABLE IF EXISTS …
. См. ответ @ Jovan .