Опубликовать DACPAC в SQL Server 2014 с помощью SqlPackage.exe?

Я успешно публикую DACPAC в экземплярах SQL Server 2008-2012 с использованием SqlPackage.exe, установленного средствами данных SQL Server (и обычно его можно найти в C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin). Однако при попытке опубликовать DACPAC, нацеленный на 2014 год, в экземпляр SQL Server 2014, используя тот же SqlPackage.exe, я получаю следующее:

*** Could not deploy package.
Internal Error. The database platform service with type Microsoft.Data.Tools.
Schema.Sql.Sql120DatabaseSchemaProvider is not valid. You must make sure the
service is loaded, or you must provide the full type name of a valid database
platform service.

Я нашел минимальную информацию об этом; самое близкое, что я обнаружил, это проблема публикации в Azure.

Я держал в курсе патчи SSDT, но предположил бы, что SqlPackage.exe, который у меня есть (который показывает версию 11.0.2902.0), просто несовместим. Я могу выполнить публикацию в этом же экземпляре с помощью команды "Опубликовать" в Visual Studio 2012, поэтому сам экземпляр не является проблемой.

Существует ли более новая версия SqlPackage, которая будет поддерживать публикацию DACPAC 2014 на сервере 2014? Или другой сценарий способ сделать это?

3 ответа

Решение

Да, есть новая версия, поддерживающая SQL Server 2005-2016, и она устанавливается в другом месте, чем предыдущая (SQL Server 2012 и ниже). Фактически, у вас будут разные места установки в зависимости от того, используете ли вы просто SSDT или устанавливаете его как часть SSMS или автономного установщика.

  • SSDT устанавливает библиотеки Dac DLL в Visual Studio в последних выпусках. Это делается для того, чтобы избежать параллельных проблем (Visual Studio 2012 vs 2013 vs SSMS), которые требовали обновления всех для использования новейшего кода.

    • Если вы обновились до последней версии SSDT, вы найдете файл SqlPackage.exe и связанные библиотеки DLL в каталоге установки VS \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130. Для VS2013 каталог установки VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0 и 14.0 для VS2015.
  • SQL Server Management Studio (SSMS) и автономный MSI Dac Framework устанавливаются в общесистемном расположении. Это C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Dac \ bin.

Теперь существует официальный пакет https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild/ NuGet, который содержит SqlPackage.exe и сообщение в блоге с подробностями:

Этот пакет NuGet содержит все необходимые компоненты для создания и публикации проектов SQL (.sqlproj). Это поддерживает непрерывную интеграцию и сценарии непрерывного развертывания - проекты SQL могут быть построены на локальном агенте сборки без установки полных продуктов Visual Studio или SQL Server Data Tools (SSDT).

SSDT устанавливает библиотеки Dac DLL в Visual Studio в последних выпусках. Это делается для того, чтобы избежать параллельных проблем (Visual Studio 2012 vs 2013 vs SSMS), которые требовали обновления всех для использования новейшего кода. Если вы обновились до последней версии SSDT, вы найдете файл SqlPackage.exe и связанные библиотеки DLL в каталоге установки VS \Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130. Для VS2013 каталог установки VS: C:\Program Files (x86)\Microsoft Visual Studio 12.0 и 14.0 для VS2015. SQL Server Management Studio (SSMS) и автономный MSI Dac Framework устанавливаются в общесистемном расположении. Это C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Dac \ bin.

** Ответ мистера Кевина Куннэйна. это правильный процесс, но если база данных в sql2016 использовать 140\dac **

Другие вопросы по тегам