生成针对多个目标平台的多个DACPAC

时间:2017-11-17 01:41:46

标签: sql-server-data-tools sqlproj

我有一个SSDT sql server数据库项目,我想将其部署到内部部署的SQL Server 2016和SQL Azure。

看来我只能将项目设置为针对一个平台 Visual Studio sqlproj properties

我希望能够构建此项目(使用VSTS构建代理)并获取多个DACPAC文件,每个目标平台一个。

这个问题Visual Studio Database project target platform in publish profile实际上可能就是答案。但是我觉得我可能需要单独的DACPAC用于部署方案。

4 个答案:

答案 0 :(得分:1)

由于我使用Visual Studio进行构建,因此可以将属性参数传递给命令行

/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider

这使我可以在构建时控制数据库模式提供程序。在YAML天青管道上使用此代码看起来像这样:

        - task: VSBuild@1
          inputs:
            solution: '$(build.SourcesDirectory)\mydatabase\whoopie.sqlproj'
            vsVersion: 'latest'
            msbuildArgs: '/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'

答案 1 :(得分:0)

您不需要单独的dacpac或技术上甚至个人发布配置文件。您需要在发布时设置选项以允许不兼容的平台。只要您没有使用不能与该版本的SQL Server一起使用的功能,这将使您能够将数据库发布到任何支持的平台。

答案 2 :(得分:0)

如果右键单击项目并单击"发布..."然后打开Advanced,有一个选项可以忽略数据库不兼容。

enter image description here

答案 3 :(得分:0)

我已经使用两种不同的方法进行类似的处理。两者都有些乏味,但是可以工作:

  1. 在构建过程中,使用脚本修改目标平台和程序集名称,然后为要支持的每个目标平台构建项目。

  2. 或者,为每个目标平台创建单独的数据库项目。但是,您可以将文件从“主”项目链接到它们,而不是将文件复制到每个项目中。在Visual Studio中,您将“添加现有项”,但是在添加对话框中,选择“添加为链接”。现在,您只需要将文件维护在一个位置,但是几个不同的db项目都引用了该文件。 enter image description here

#2中最繁琐的部分是,每次将新文件添加到“ master”项目时,都必须记住要在其他文件中链接到该文件。