gpt4 book ai didi

sql-server - 将 Dacpacs 部署到锁定生产中的可用性组

转载 作者:行者123 更新时间:2023-12-02 03:21:58 31 4
gpt4 key购买 nike

我和我的 DBA 正在努力研究如何有效地使用 Microsoft 的数据库项目和它们生成的 Dacpacs 来简化我们的生产部署系统。

理想情况下,我将能够构建和/或发布 .sqlproj,生成一个 .dacpac 文件,然后可以将其上传到生产服务器并使用将数据库从任何版本升级到最新版本。这类似于我们进行网站部署的方式,我发布到一个包,然后将该包上传到服务器并导入到 IIS。

但是,我们无法弄清楚如何让它发挥作用。 DBA 已经创建了数据库并将其添加到我们的可用性组中。每次我们尝试应用 Dacpac 时,它都会尝试调整由于 AG 而无法调整的设置。

我无法创建 .dacpac 文件,该文件不会尝试对数据库施加设置。我找到的最接近的选项会在发布时将它们排除在外,但据我所知,您不能发布到无法访问的数据库,只有 DBA 才能访问生产服务器。

我真的可以这样使用 dacpacs 吗?

最佳答案

这有两个部分,首先,您如何停止部署您不想部署的设置 - 您能否举例说明其中一个不适用的设置?

对于您无法访问 SQL Server 的第二部分,有几种不同的方法可以处理此问题:

  • 使用离线副本生成部署脚本
  • 让 DBA 生成部署脚本
  • 让 DBA 使用 dacpac 进行部署
  • 获取对数据库的只读访问权限

选项 1:“使用离线副本生成部署脚本”

您需要将 dacpac 与某些东西进行比较,如果您没有 TDS 连接(默认实例默认端口 tcp:1433),那么您可以通过以下方式使用与生产相匹配的数据库版本:

  • 使用日志传送在您可以访问的地方恢复生产副本
  • 同步开发数据库和生产数据库,然后将每个版本发布到开发数据库和生产数据库,确保它们保持同步

日志传送副本是最简单的,如果是开发服务器,您通常可以拥有服务器权限来为您提供访问权限,或者您可以在数据库级别而不是生产服务器级别创建正确的权限。

如果数据是敏感的,那么日志传送的副本可能不合适,因此您可以尝试使开发和生产数据库保持同步,但这很困难,并且要求 DBA 接受“良好培训”,不要运行任何不符合要求的东西' 也首先针对 db 数据库运行。

一旦您有权访问与生产数据库具有完全相同架构的数据库,您就可以使用 sqlpackage.exe/action:script 生成部署脚本,事实上,因为它不是生产数据库,您可以生成脚本作为 CI 流程的一部分 :).

选项 2:“让 DBA 生成部署脚本”

这是为了让 DBA 将 dacpac 复制到生产服务器,并使用位于“Program Files (x86)\Microsoft Sql Server\Version\DAC\bin”文件夹中的 sqlpackage.exe 将 dacpac 与数据库并生成一个他可以在部署前查看的脚本。

选项 3:“让 DBA 生成部署脚本”

这与选项 2 类似,但他没有生成在 SSMS 中部署的脚本,而是使用 sqlpackage.exe/Action:Publish 直接部署更改。

选项 4:“获取对数据库的只读访问权限”

这实际上是我的首选,因为它意味着您始终根据保证的生产状态(因为它是生产状态)构建脚本。在您的情况下,您需要在您的机器或理想情况下您的构建机器与 SQL Server 之间获取 tcp 端口,然后您将需要这些权限:

https://the.agilesql.club/Blogs/Ed-Elliott/What-Permissions-Do-I-Need-To-Generate-A-Deploy-Script-With-SSDT

正如我所说,选项 4 始终是我的首选,但我知道这并不总是可行的。

选项 2 + 3 令人担忧,因为您将运行尚未在任何地方测试过的脚本,使用选项 4 和 1 您可以生成脚本,然后部署到测试/QA 数据库,只要它们自己有与生产相同的架构。脚本还可以通过代码审查过程。

如果您选择选项 2/3,那么我将创建一个驱动 sqlpackage.exe 的批处理文件或 powershell 脚本,如果它们从没有 sqlpackage.exe 的不同服务器部署,那么您可以将 DAC 文件夹复制到那个机器并从中运行 sqlpackage,您不必实际安装它(您可能还需要从“Program Files (x86)\Microsoft Sql Server\Version\SDK\”复制 Microsoft.SqlServer.TransactSql.ScriptDom.dll程序集”文件夹。

希望这对您有所帮助,如果您还有其他问题,请随时在这里发帖或私信我 :)

编辑

关于sql-server - 将 Dacpacs 部署到锁定生产中的可用性组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705393/

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