Невозможно опубликовать DACPAC в базе данных SQL Azure с помощью sqlpackage.exe

При попытке применить DACPAC к базе данных SQL Azure я получаю от sqlpackage.exe следующее:

*** Ошибка при создании плана развертывания. Развертывание не может продолжаться. Класс элемента или аннотации SqlDatabaseOptions не содержит класса свойств CatalogCollation.

Мне удалось использовать VS2017 с SSDT для создания пакета, а затем развернуть его в другой базе данных с помощью обозревателя объектов SQL Server, но он не работает, когда я использую sqlpackage.exe, найденный в

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130

Уровень совместимости базы данных SQL Azure установлен на 140, поэтому я не уверен, использует ли SSDT (v 15.6.0) более современную версию sqlpacakage.exe или где я могу ее найти? Я также пытался запустить его из задачи VSTS развертывания базы данных SQL Azure и получить тот же результат.

Я попытался сопоставить переключатели командной строки, найденные в этом окне, но опять же, я все еще получить ту же ошибку.

Есть ли версия sqlpackage.exe, которую использует SSDT, которую я не могу найти, или это параметр, который мне не хватает?

Для справки это команда, которую я использую:

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130> sqlpackage.exe /SourceFile:"generated.dacpac "/ Действие: Опубликовать /TargetServerName:"xxxxxxx.database .windows.net "/ TargetDatabaseName:" xxxxxxx "/ TargetUser:" xxxxxx "/ TargetPassword:" xxxxxxx "/ TargetTimeout: 120


person NeilCampbell    schedule 13.05.2018    source источник


Ответы (2)


Похоже, вам может потребоваться обновить Microsoft SQL Server Data-Tier Application Framework на вашем компьютере. Загрузите последнюю версию здесь. После установки вы найдете его по следующему пути C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ DAC \ bin \ SqlPackage.exe »и обновите независимо от SSDT / SSMS.

SSMS имеет собственную версию SqlPackage. SSDT также имеет свою собственную версию, которую вы можете найти в C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130.

person Alberto Morillo    schedule 13.05.2018
comment
Спасибо, мне этого не хватало. Я использовал версию в C: \ Program Files \ Microsoft SQL Server \ 140 \ DAC \ bin - person NeilCampbell; 14.05.2018

Azure SQL - это служба PaaS, что означает, что она прозрачно и относительно часто получает обновления с новым уровнем совместимости.

Сейчас Azure SQL - 150.
Когда вы создаете новую базу данных, она будет настроена с использованием последней версии. Однако на вашем компьютере и на ваших агентах развертывания могут быть не развернуты новейшие инструменты.
Если инструменты не соответствуют уровню совместимости вашей базы данных, развертывание завершится ошибкой.

Если вы развертываете с помощью VSTS Hosted Agent, вы не контролируете ситуацию, и он всегда будет немного отставать. В этом случае самое простое решение - снизить уровень совместимости вашей базы данных.
Это довольно просто, поскольку вам просто нужно запустить оператор SQL в базе данных, как показано ниже:

ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL =  130;
person Sadik Ali    schedule 26.11.2018
comment
Разместите свои источники. Это взято из статьи, на которую вы не указали. - person hmiedema9; 29.08.2019
comment
Поскольку комментатору не удалось добавить источник, вот он: geeklearning.io/dacpac -and-azure-sql-updates - person Fverswijver; 08.12.2020