【问题标题】:Publishing Databases using DacPac in Visual Studio 2013在 Visual Studio 2013 中使用 DacPac 发布数据库
【发布时间】:2013-12-24 17:38:52
【问题描述】:

我需要澄清一下何时将数据库注册为数据层应用程序 (DAC)。我查看了所有指南,但有几点被卡住了。

  • 数据库注册
  • 构建数据库项目以生产 DacPac
  • 发布数据库项目
  • 选中“注册为数据层应用程序”
  • 选中“当数据库偏离注册版本时阻止发布”

第一次,这行得通。它注册数据库并成功。

但是,在随后的发布中失败了,因为它说数据库已经注意到两个没有改变的用户。

我是否遵循正确的流程?即设置发布脚本每次都重新注册?

进行更改的最佳做法是什么?通过更改数据库项目中的相关 .sql 文件然后构建?指南谈论了很多关于能够使用 DacPac 对 DB 进行版本控制的问题,但不清楚如何。我应该重命名每个 DacPac 并将其提交到 TFS 吗?

我的下一步是将数据库作为整体 ASP.Net 解决方案的一部分发布。当我尝试这样做时(不包括数据库发布时它工作正常),它会出现以下错误

Web deployment task failed. (The SQL provider cannot run with dacpac option because of a missing dependency. Please make sure that DacFx is installed.  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DACFX_NEEDED_FOR_SQL_PROVIDER.)

但是,我已在发布机器上安装了所有必需的元素。它们是否需要位于 SQL Server 或 IIS VM 上?

任何指导将不胜感激。

【问题讨论】:

  • 拥有出版机器上的所有位就足够了。你能登录到那台机器来验证它是否工作吗?此外,看到“Web 部署”失败,您可能需要检查 IIS 以确保它拥有一切。我们一直在使用 Jenkins 进行发布,使用 SQLPackage 来完成这项工作,它似乎可以工作。
  • 对于“漂移”问题,您可能需要仔细检查生成的脚本是否符合预期。我之前看到过由于额外或缺少括号或在对象名称周围使用 [] 而导致对象“需要”更改的问题。

标签: asp.net sql-server visual-studio visual-studio-2013 sql-server-data-tools


【解决方案1】:

如果您想使用 dacpac 将更改部署到数据库,则需要将数据库注册为 DAC。这基本上会在该时间点创建数据库的快照。您在进行更改以创建初始快照之前执行此操作,然后在部署之后执行此操作。

您这样做的原因是为了检测漂移。假设您进行了部署,并且有人直接在该数据库中进行了更改,例如更改存储过程的逻辑,您可能想在进行后续部署之前了解该更改。如果您部署您的 dacpac 并忽略此更改,它会将其更改恢复为 dacpac 模型中的内容。这就是漂移发生的地方。您可以生成有关通过 sdk 漂移的内容的 xml 报告。

您可以启用一项设置以在发生偏差时禁用部署,以便您可以直接在源代码中修改数据库中的这些更改。然后,您需要将数据库重新注册为 DAC 以创建新快照。

我是否遵循正确的流程?即将发布脚本设置为每次重新注册?

进行更改的最佳做法是什么?通过更改数据库项目中的相关 .sql 文件然后构建?

指南讨论了很多关于能够使用 DacPac 对 DB 进行版本控制的问题,但不清楚如何进行。我应该重命名每个 DacPac 并将其提交到 TFS 吗? 您可以在数据库中设置一个版本。查看数据库项目的属性。你不应该重命名 dacpac。

关于 ASP.Net 发布,我需要更多关于项目结构和环境设置的详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多