gpt4 book ai didi

dacpac - 使用 SqlPackage 发布 dacpac 时覆盖 DefaultDataPath 和 DefaultLogPath 变量

转载 作者:行者123 更新时间:2023-12-01 23:46:32 26 4
gpt4 key购买 nike

环境:

  1. 使用 Visual Studio 2013 Update 4 中的 SQL Server 数据库工具创建用于发布数据库的 DacPac。
  2. 使用 TFS 构建来构建和删除数据库项目。
  3. 使用 SqlPackage 版本将 dacpac 发布到 SQL Server 2012。

使用 SqlPackage 操作“Publish”,使用以下变量生成部署脚本基于目标数据库的默认值:

:setvar DefaultDataPath "H:\YourServerDefault"
:setvar DefaultLogPath "H:\YourServerDefault"

我想覆盖这些位置以进入我们配置了一些外部加密的特定目录对。

我尝试以多种方式覆盖这些 SQLCMD 值:

  1. 在命令行上覆盖:

    SQLPackage/Action:Publish/SourceFile:./Db.dacpac/Profile:./MyProfile.publish.xml/Variables:DefaultDataPath=H:\MyNewLocation

  2. 在发布配置文件中添加覆盖(下面的代码段):

<项目组>

H:\YourServerDefault

虽然我可以使用任何一种技术来覆盖我自己定义的 SQLCMD 变量,但会忽略内置变量,如 DefaultDataPath 和 DefaultLogPath。

有没有办法在使用 SqlPackage 发布时覆盖这些值?

最佳答案

SqlPackage 中没有内置支持,但您可以使用部署贡献者来实现。看看 DbLocationModifier GitHub 上的示例正好解决了这个问题。要实际使用它,您需要:

  • 从Github下载代码
  • 为项目添加签名 key
  • 安装到 correct extensions directory , 或者将其放在与 SqlPackage 本身相同的文件夹中。
  • 将附加参数传递给 SqlPackage,指定您的贡献者名称和参数 - 请参阅 test code对于如何通过 API 执行此操作,SqlPackage 调用本质上是相同的。

有关贡献者以及如何使用他们的更多信息,您可以阅读 tutorial我写或读了 walkthroughs在 MSDN 上。

披露:我在 SQL Server 工具团队工作。

关于dacpac - 使用 SqlPackage 发布 dacpac 时覆盖 DefaultDataPath 和 DefaultLogPath 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com