3

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

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

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

这个问题Visual Studio Database project target platform in publish profile实际上可能是答案。但是我有一种感觉,我可能需要单独的 DACPAC 用于部署场景。

4

4 回答 4

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'
于 2020-04-27T17:41:14.053 回答
0

我对类似的事情使用了两种不同的方法。两者都有些乏味,但工作:

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

  2. 或者,为每个目标平台创建单独的数据库项目。但是,您可以从“主”项目链接到它们,而不是将文件复制到每个项目中。在 Visual Studio 中,您将“添加现有项”,但随后在添加对话框中,选择“添加为链接”。现在,您只需在一个地方维护该文件,但它被几个不同的数据库项目引用。 在此处输入图像描述

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

于 2020-04-27T14:41:13.510 回答
0

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

于 2017-11-22T21:07:05.360 回答
0

如果您右键单击项目并单击“发布...”,然后打开高级,则可以选择忽略数据库不兼容。

在此处输入图像描述

于 2017-12-16T02:13:27.173 回答