Область действия переменных T-SQL находится в пакете T-SQL. Пакет завершается командой «GO».
Следовательно, после GO, @foo должен быть объявлен повторно.
Например:
ОБЪЯВИТЬ @foo int = 0;
GO
SELECT @foo; - Эта строка выдаст ошибку.
Если GO перемещается до конца, он будет работать и вернет значение @ foo.
ОБЪЯВИТЬ @foo int = 1;
SELECT @foo; - Эта строка вернет 1.
GO
Batch Scope - это не новое поведение SQL Server, это было поведение начиная с версии 1.
Попробуйте взглянуть на тег «sqlFile» LiquidBase и посмотреть, были ли атрибуты endDelimiter или атрибут splitStatements установлены неправильно.