环境:
使用SqlPackage操作“发布”,使用以下变量根据目标数据库的默认值生成部署脚本:
:setvar DefaultDataPath“H:\ YourServerDefault”
:setvar DefaultLogPath“H:\ YourServerDefault”
我想覆盖这些位置,以便在我们配置了一些外部加密的特定目录对中着陆。
我试图以两种方式覆盖这些SQLCMD值:
在命令行上覆盖:
SQLPackage / Action:Publish /SourceFile:./Db.dacpac /Profile:./MyProfile.publish.xml / Variables:DefaultDataPath = H:\ MyNewLocation
在发布资料中添加覆盖(下面的代码段):
<&的ItemGroup GT;
< SqlCmdVariable Include =“DefaultDataPath”>
<值及GT; H:\ YourServerDefault< /值及GT;
< / SqlCmdVariable>
< /&的ItemGroup GT;
虽然我可以使用任何一种技术来覆盖我自己定义的SQLCMD变量,但忽略了DefaultDataPath和DefaultLogPath之类的内置函数。
使用SqlPackage发布时有没有办法覆盖这些值?
答案 0 :(得分:3)
SqlPackage中没有内置支持,但您可以使用部署贡献者执行此操作。看一下GitHub上的DbLocationModifier示例,它可以解决这个问题。要实际使用它,您需要:
有关贡献者以及如何使用它们的更多信息,您可以阅读我撰写的tutorial或阅读MSDN上的walkthroughs。
披露:我在SQL Server工具团队工作。