Как создать проект SSDT с другой целевой платформой в CI или из msbuild - PullRequest
0 голосов
/ 29 мая 2020

В проекте SSDT в VS 2019 есть целевая платформа, которая указывает версию целевой базы данных для bacpa c при выполнении сборки:

enter image description here

Для локальной разработки это правильно, но при настройке непрерывной доставки мы хотим использовать Azure База данных, что является другим вариантом. Попытка опубликовать sh файл bacpa c, созданный для SQL Server 2017, приводит к ошибке A project which specifies SQL Server 2017 as the target platform cannot be published to Microsoft Azure SQL Database v12.

Это происходит потому, что, я думаю, в файле bacpa c model.xml есть - это строка

<DataSchemaModel FileFormatVersion="1.2" SchemaVersion="2.9" DspName="Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider" CollationLcid="1033" CollationCaseSensitive="False" xmlns="http://schemas.microsoft.com/sqlserver/dac/Serialization/2012/02">

, где DspName относится к SQL Server 2017.

Есть ли возможность передать msbuild, который заставит его построить bacpa c для другой, Azure SQL База данных, цель?

Я пытался использовать профиль publi sh и указывать /p:SqlPublishProfilePath="Ci.publish.xml", если ci.publi sh. xml был создан из базы данных Azure, но это не влияет на создание бакпа c. Действительно, файл ci.publish.xml содержит только имя базы данных и строку подключения, в любом случае ничего о версии.

1 Ответ

0 голосов
/ 29 мая 2020

Как часто бывает, ввод вопроса заставляет задуматься, и в файле sqlproj вы увидите для SQL Server 2017:

   <DSP>Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider</DSP>

и для Azure SQL базы данных:

   <DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>

, поэтому передача параметра msbuild

msbuild /t:Build Db.sln /p:Configuration=Release /p:Platform="Any cpu" /p:DSP="Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider"

помогает.

...