多个环境下的数据库项目?

时间:2016-03-08 20:13:43

标签: database database-schema release-management ms-release-management dacpac

如何在数据库项目中具有特定于环境的表值,并确保它们仅部署到您使用Release Management部署到的环境?我们已经使用Release Management一段时间了,但仅限于.NET代码。我们对DACPAC领域有些新意,但发现通过发布管理可以轻松设置和使用。但是,现在我们希望将此功能扩展到每个环境具有配置变量的表。我们如何制作数据库项目的这一部分,并确保每个环境都有自己独特的数据版本?

2 个答案:

答案 0 :(得分:1)

使用SSDT发布数据库架构和参考数据;不要用它来管理环境设置。

就个人而言,我会(并且已经)在部署后运行辅助脚本,该脚本配置了特定于环境的值。这与在部署后的Web应用程序的web.config文件中放入正确的值没有什么不同。这是您在部署工具中管理的内容。

答案 1 :(得分:0)

忽略问题的发布管理部分(因为它取决于您使用的模式以及是否将配置变量存储在RM等中),您当然可以将特定于环境的值传递到您的dacpac执行中(用于' postdeploy& #39;数据脚本)使用在标记化的发布文件中定义的sqlcmd变量。 整个过程是:

  • 在您的帖子部署脚本中使用标准sqlcmdvar语法,例如插入表值' $(my_env_var)'

  • 更新数据库项目属性(sqlcmd选项卡)以包含新变量,以确保您的dacpac在执行时需要一个值

  • 生成publish.xml文件(现在应包含节点)

  • 创建一个publish.release.xml文件,其中包含转换指令以更新节点的值以引入令牌,例如## my_env_var ##

  • 更新您的数据库项目文件(.sqlproj),以包含使用publish.release.xml的内容在构建上转换publish.xml的说明

它耗时很长,但你从上面得到的是你的构建输出中的一个dacapac + tokenised发布文件,可以通过你的部署过程进行说明并执行..即RM或任何其他工具。