有没有办法在 CI\CD 场景中将数据库更改(架构或数据)推送到我的 SQL Azure 数据库?
最佳答案
是的,有。如何做到这一点取决于您选择插入这些变革的技术。以下是一些更流行的工具支持:
通过 DACPAC 从 Visual Studio 数据库项目部署更改。您可以设置数据库项目来构建 DACPAC,然后使用各种工具将 DACPAC 发布到您的服务器。我知道这可以通过 Visual Studio Team Services 的 CI 构建和发布管道来完成。您可以使用 Azure SQL Database Deployment task这样做。
使用 Entity Framework 代码优先迁移进行部署。您可以将 migrate.exe 编写到几乎任何 CI 工具中。我最喜欢这个有两个原因。首先,您明确地编写您希望 EF 在升级期间执行的操作的脚本。您还可以编写数据添加/转换的脚本。其次,支持回滚,尽管您必须定义回滚期间采取的步骤。
我发现 EF Code First 迁移最适合与 Azure SQL DB 一起使用,因为它不会强制您的生产数据库与 DACPAC 定义完全匹配。如果您已经为数据库启用了自动性能调整,那么这一点非常重要。
考虑以下情况:您启用自动性能调整,并且 Azure 意识到您需要在包含大约数十亿条记录的表上建立索引。它应用索引。这个新索引不会引起您的注意,并且您不会将其包含在数据库项目定义中。下次部署 DACPAC 时,它将回滚该索引。并且可能会从 DTU 中剔除 *@,导致严重的速度减慢和/或查询排队。这对于 Code First 迁移来说不是问题。
关于sql-server - 将数据库更改推送到我的 SQL Azure 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48608231/