sql-server - 在单个构建中创建所有 SQL Server 版本的 dacpac 文件

标签 sql-server visual-studio-2015 sql-server-data-tools dacpac

我们有多个客户端,他们的服务器上运行着不同的数据库版本。部分客户端使用 SQL Server 2008,部分客户端使用 SQL Server 2012,部分客户端使用 SQL Server 2014。

我的 Visual Studio 2015 解决方案中有一个 SSDT 项目。

对于生产部署,首先我们向客户端询问 SQL Server 版本,然后根据该版本,我们向客户端提供合适的 .dacpac 文件。

每次构建 SSDT 项目时,它只会在所选“目标平台”版本的输出文件夹中创建一个 .dacpac 文件(SSDT 项目 > 属性 > 项目设置 > 目标平台)

  • 如果选择 SQL Server 2008 作为目标平台 - 将为 SQL Server 2008 创建单个 .dacpac 文件

  • 如果选择 SQL Server 2012 作为目标平台 - 将为 SQL Server 2012 创建单个 .dacpac 文件

有没有办法在单个构建中为所有版本创建多个 .dacpac 文件,而无需手动更改“目标平台”设置?

通过使用前/后构建事件或使用某些 Exe 文件?

谢谢。

最佳答案

我也遇到过类似的事情,我需要一个项目在多个版本上工作,我的管理方式是将其设置为您支持的最低版本(我只需要 2007r2 和 2012,所以这并不太难) 。然后,当我部署时,我将“AllowInknownPlatform”设置为 true。

另一种方法是将 dacpac 作为 zip 文件打开或使用 System.Packaging .net api 并更改 model.xml 中的版本。

我还在博客中介绍了当您无法控制要部署到的数据库时您可能已经知道的一些困难:

https://the.agilesql.club/blogs/Ed-Elliott/2016-09-20/Database-Deployments-Where-A-Customer-Manages-The-Database

如果您决定更改 dacpac 内的版本,请告诉我,我将向您展示如何操作,但这确实意味着您跳过了不理想的构建阶段。

编辑

关于sql-server - 在单个构建中创建所有 SQL Server 版本的 dacpac 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624262/

相关文章:

c# - MySql LIMIT 1 子句的替代方案 - 不希望仅限于一个 RDBMS

java - 如何使用 hibernate 在 SQL Server 数据库中存储 joda DateTime

c - Visual Studio 2015 - 使用 C90 标准?

c# - 在监 window 口中评估动态属性

visual-studio-2017 - SSDT安装问题(无法执行EXE包。)

python - 使用 SQLAlchemy 和 pymssql 进行 Windows 身份验证

php - 向 PHP 添加动态选项从 SQL Server 数据库填充下拉列表

c++ - NuGet 不添加包含目录

sql-server - 使用 MSDeploy 发布 DACPAC 文件,部署后脚本中的 UTF8 字符丢失

azure - 'Query' 和 'InputFile' 选项是互斥的。使用 Azure SQL 数据库部署任务时