Если поставить:
IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test
GO
В начале проблема исчезнет, так как пакет будет проанализирован до того, как существует таблица #test.
То, что вы просите, чтобы система распознала, что "1 = 0" всегда будет иметь значение false. Если бы это когда-либо было правдой (что потенциально могло бы иметь место для большинства реальных условий), то вам, вероятно, хотелось бы знать, что вы собираетесь запустить что-то, что может вызвать сбой.
Если вы удаляете временную таблицу, а затем создаете хранимую процедуру, которая делает то же самое:
CREATE PROC dbo.test
AS
BEGIN
IF OBJECT_ID('tempdb..#test') IS NULL
CREATE TABLE #test ( GoodColumn INT )
IF 1 = 0
SELECT BadColumn
FROM #test
END
Тогда это будет с радостью создано, и вы можете запускать его столько раз, сколько захотите.
Rob