У меня есть 4 сценария sql, которые я хочу запустить в DACPAC в PostDeployment, но когда я пытаюсь создать проект VS для трех из них, я получаю эту ошибку:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Скрипты содержат только INSERT
операторы в разных таблицах БД. И все они устроены так
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
только на разных таблицах и с разными данными.
У меня вопрос: почему VS жалуется на 3 из них, когда все сценарии одинаковы с точки зрения синтаксиса и операций?
PS: добавление «GO» между операторами, как предполагает ошибка, ничего не делает.
sql
sql-server
visual-studio-2012
dacpac
Космин Ионаску
источник
источник
Несмотря на то, что это кажется довольно старым, я тоже на несколько часов застрял с этим, и я думаю, что этот способ может быть полезен для многих.
В системе
Database project
файлы, заданные какBuild
, считаются структурой базы данных, поэтому в таком файле допускается использование только одного оператора.Go
ни какой другой терминатор пакета не изменит это поведение, это сообщение - просто ошибка. Больше информации здесь.В таком проекте есть много других вариантов сборки файлов. Для твоего случая так кажется
PostDeploy
. В таком файле могут быть различные команды, например,inserts
и т. Д.Затем вы можете использовать вывод проекта базы данных как файл dacpac для приложений БД уровня данных (в противном случае он не включен).
источник
Удалите; (точка с запятой) из последнего из каждого оператора, и я не уверен, но GO не требуется между указанными выше операторами вставки.
источник