Запустите скрипт в режиме SQLCMD в SSMS и используйте :on error exit
. Если вы запускаете сценарий из приложения, используйте библиотеку, совместимую с режимом sqlcmd, например dbutilsqlcmd .
Редактировать
Чего не хватает во многих ответах, рекомендующих различные формы IF
и RETURN
и sp_executesql
, так это в том, что они решают только проблему не выполнения пакета (последовательность, ограниченная GO
). Это мало помогает, когда речь идет о скрипте . Пакет, который проверяет существование БД, пропустит операторы, хорошо, но следующий пакет в сценарии будет продолжен и будет делать то, что он делает (например, создавать таблицы) в текущей базе данных, а не в требуемой базе данных. Добавление проверки в начале каждой партии является утомительным и подверженным ошибкам, размещение всего сценария в одной партии часто невозможно. Лучшее решение - просто сделать USE <inexisting name>
и положиться на :on error exit
, чтобы прервать выполнение скрипта при первой ошибке.