Если я правильно угадаю, проблема в том, что план запроса составляется для всего сценария, и SQL Server также проверяет, может ли он фактически выполнять все операции, даже если он находится внутри оператора if.Вот почему вы получите ошибку, даже если в действительности это утверждение никогда не будет выполнено.
Один из способов обойти эту проблему - сделать все эти операторы динамическими, что-то вроде этого:
execute ('ALTER TABLE [Setup].[LeaveVacationsSubType] MODIFY [intIntialBalance] INT')