生成针对多个目标平台的多个 DACPAC
Generate multiple DACPACs targeting multiple target platforms
我有一个 SSDT sql 服务器数据库项目,我想将其部署到本地 SQL Server 2016 和 SQL Azure。
看来我只能将项目设置为针对一个平台
我希望能够构建此项目(使用 VSTS 构建代理)并获取多个 DACPAC 文件,每个目标平台一个。
这个问题 实际上可能就是答案。但是,我感觉我可能需要针对部署方案的各个 DACPAC。
您不需要单独的 dacpacs 或技术上什至不需要单独的发布配置文件。您需要在发布时设置选项以允许不兼容的平台。这将使您能够将数据库发布到任何支持的平台,只要您不使用不适用于该版本的 SQL 服务器的功能。
如果右击项目并点击"Publish..."然后打开高级,有一个选项可以忽略数据库不兼容。
我对类似的事情使用了两种不同的方法。两者都有些乏味,但工作:
在构建过程中,使用脚本修改目标平台和程序集名称,然后为每个要支持的目标平台构建项目。
或者,为每个目标平台创建单独的数据库项目。但是,您可以从 "master" 项目 link 向它们复制文件,而不是将文件复制到每个项目中。在 Visual Studio 中,您会 "Add Existing Item",但随后在添加对话框中,您选择 "Add as Link"。现在,您只需在一个地方维护该文件,但它会被多个不同的数据库项目引用。
#2 中最繁琐的部分是,每次向 "master" 项目添加新文件时,您都必须记住在其他项目中对它进行 link。
因为我正在使用 Visual Studio 进行构建,所以我可以将属性参数传递给命令行
/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
这让我可以在构建时控制数据库模式提供程序。在 YAML azure 管道中使用它看起来像这样:
- task: VSBuild@1
inputs:
solution: '$(build.SourcesDirectory)\mydatabase\whoopie.sqlproj'
vsVersion: 'latest'
msbuildArgs: '/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'
我有一个 SSDT sql 服务器数据库项目,我想将其部署到本地 SQL Server 2016 和 SQL Azure。
看来我只能将项目设置为针对一个平台
我希望能够构建此项目(使用 VSTS 构建代理)并获取多个 DACPAC 文件,每个目标平台一个。
这个问题
您不需要单独的 dacpacs 或技术上什至不需要单独的发布配置文件。您需要在发布时设置选项以允许不兼容的平台。这将使您能够将数据库发布到任何支持的平台,只要您不使用不适用于该版本的 SQL 服务器的功能。
如果右击项目并点击"Publish..."然后打开高级,有一个选项可以忽略数据库不兼容。
我对类似的事情使用了两种不同的方法。两者都有些乏味,但工作:
在构建过程中,使用脚本修改目标平台和程序集名称,然后为每个要支持的目标平台构建项目。
或者,为每个目标平台创建单独的数据库项目。但是,您可以从 "master" 项目 link 向它们复制文件,而不是将文件复制到每个项目中。在 Visual Studio 中,您会 "Add Existing Item",但随后在添加对话框中,您选择 "Add as Link"。现在,您只需在一个地方维护该文件,但它会被多个不同的数据库项目引用。
#2 中最繁琐的部分是,每次向 "master" 项目添加新文件时,您都必须记住在其他项目中对它进行 link。
因为我正在使用 Visual Studio 进行构建,所以我可以将属性参数传递给命令行
/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
这让我可以在构建时控制数据库模式提供程序。在 YAML azure 管道中使用它看起来像这样:
- task: VSBuild@1
inputs:
solution: '$(build.SourcesDirectory)\mydatabase\whoopie.sqlproj'
vsVersion: 'latest'
msbuildArgs: '/p:DSP=Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'