【问题标题】:Push database changes to my SQL Azure database将数据库更改推送到我的 SQL Azure 数据库
【发布时间】:2018-02-05 03:50:43
【问题描述】:

有没有办法在 CI\CD 场景中将数据库更改(架构或数据)推送到我的 SQL Azure 数据库?

【问题讨论】:

  • 使用 SQL Server Data Tools(VS 中的 SQL Server 项目模板)创建的 dacpac 文件可用于部署管道。 Pre 和 Post 脚本通常用于推送数据。
  • 添加到@Crowcoder 的评论,SSDT download
  • 您还可以将 ReadyRoll 和 SQL 源代码控制等其他工具与 TeamCity、Visual Studio、Octopus 等部署工具结合使用。它们都支持 Azure SQL 数据库。

标签: sql-server azure continuous-integration azure-sql-database continuous-deployment


【解决方案1】:

是的,有。您如何做到这一点取决于您选择推动这些变化的技术。以下是一些更受欢迎的工具支持:

  • 通过 DACPAC 从 Visual Studio 数据库项目部署更改。您可以设置数据库项目来构建 DACPAC,然后使用各种工具将 DACPAC 发布到您的服务器。我知道它可以通过 CI 的 Visual Studio Team Services 构建和发布管道来完成。您可以使用Azure SQL Database Deployment task 来执行此操作。

  • 使用实体框架代码优先迁移进行部署。您可以将 migrate.exe 编写到几乎任何 CI 工具中。我最喜欢这个有两个原因。首先,您在升级期间明确编写您希望 EF 执行的操作。您还可以编写数据添加/转换的脚本。其次,支持回滚,尽管您必须定义回滚期间采取的步骤。

我发现 EF Code First 迁移最适合使用 Azure SQL DB,因为它不会强制您的生产数据库与 DACPAC 定义完全匹配。如果您为数据库启用了自动性能调整,这一点非常重要。

考虑以下情况:您启用了自动性能调整,Azure 意识到您需要一个包含大约 bajillion 记录的表的索引。它应用索引。这个新索引不会引起您的注意,并且您不要将它包含在您的数据库项目定义中。下次部署 DACPAC 时,它将回滚该索引。并且可能会从您的 DTU 中剔除 *@,从而导致令人讨厌的减速和/或查询排队。这不是 Code First 迁移的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2020-10-29
    • 1970-01-01
    • 2015-10-23
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多