发布管理配置DACPAC变量

时间:2015-03-28 08:45:31

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

我正在尝试在我们的存储过程中配置变量(令牌),这是DACPAC项目的一部分。我试图以与配置文件相同的方式尝试这样做。即

使用ext令牌创建重复文件。 用 TOKEN_NAME 替换要替换的项目。 在RM中为组件创建变量。 然而,这似乎不适用于DACPAC解决方案,并且变量不会被替换。

这可能与DACPAC项目有关吗?如果不是我可以采取什么方法在存储过程中添加可配置项?

如果可能,我哪里出错?

2 个答案:

答案 0 :(得分:3)

这不是发布管理问题,而是SSDT问题。您想做一些通常非常糟糕的事情:让您的数据库因环境而异。持续交付就是一致性。如果您不能相信每次将软件发布到较低环境时都在“练习”生产部署,那么当生产部署因环境差异而失败时,您就会陷入非常糟糕的时间。

那说: 您可以执行以下几项操作,按优先顺序列出:

  1. 停止让您的数据库在不同环境之间存在差异
  2. 由于您可以在部署前和部署后脚本中使用SQLCmd变量,因此请制作修改存储过程的部署后脚本,并通过RM传递值。您可以修改RM传递给sqlpackage.exe的参数,以便您可以在发布时提供SQLCmd变量。这仍然是一个非常糟糕的主意,但它应该适合你。
  3. 您可以修改发布默认模板并移动令牌交换操作的位置。令牌交换通常在构建之后发生 ;您可以将其移至之前构建。

答案 1 :(得分:0)

在发布DACPAC时,我无法看到使用令牌文件的任何方法,因为RM无法干扰sqlpackage.exe正在做什么,即使它可能导致架构停止编译。

您可以编写一个解压缩DACPAC文件的组件,替换令牌,然后将其拉回来,但这听起来很辛苦。

我的建议是在使用标记化的SQL脚本运行 DACPAC之后应用环境特定要求。我在博文here中对此进行了描述。