我正在尝试在我们的存储过程中配置变量(令牌),这是DACPAC项目的一部分。我试图以与配置文件相同的方式尝试这样做。即
使用ext令牌创建重复文件。 用 TOKEN_NAME 替换要替换的项目。 在RM中为组件创建变量。 然而,这似乎不适用于DACPAC解决方案,并且变量不会被替换。
这可能与DACPAC项目有关吗?如果不是我可以采取什么方法在存储过程中添加可配置项?
如果可能,我哪里出错?
答案 0 :(得分:3)
这不是发布管理问题,而是SSDT问题。您想做一些通常非常糟糕的事情:让您的数据库因环境而异。持续交付就是一致性。如果您不能相信每次将软件发布到较低环境时都在“练习”生产部署,那么当生产部署因环境差异而失败时,您就会陷入非常糟糕的时间。
那说: 您可以执行以下几项操作,按优先顺序列出:
sqlpackage.exe
的参数,以便您可以在发布时提供SQLCmd变量。这仍然是一个非常糟糕的主意,但它应该适合你。答案 1 :(得分:0)
在发布DACPAC时,我无法看到使用令牌文件的任何方法,因为RM无法干扰sqlpackage.exe正在做什么,即使它可能导致架构停止编译。
您可以编写一个解压缩DACPAC文件的组件,替换令牌,然后将其拉回来,但这听起来很辛苦。
我的建议是在使用标记化的SQL脚本运行 DACPAC之后应用环境特定要求。我在博文here中对此进行了描述。