有没有办法在CI \ CD场景中将数据库更改(架构或数据)推送到我的SQL Azure数据库?
答案 0 :(得分:2)
是的。您如何这样做取决于您选择推动这些变化的技术。这是一些比较受欢迎的工具支持:
通过DACPAC从Visual Studio数据库项目部署更改。您可以设置数据库项目以构建DACPAC,然后使用各种工具将DACPAC发布到您的服务器。我知道可以通过Visual Studio Team Services构建和发布CI管道来完成。您可以使用Azure SQL Database Deployment task执行此操作。
使用Entity Framework代码优先迁移进行部署。您可以将migrate.exe脚本编写到几乎任何CI工具中。我最喜欢这个有两个原因。首先,您明确地在升级期间明确编写EF要执行的操作。您还可以编写数据的添加/转换脚本。其次,支持回滚,但您必须定义回滚期间采取的步骤。
我发现EF代码优先迁移最容易使用Azure SQL DB,因为它不会强制您的生产数据库与DACPAC定义完全匹配。如果您已为数据库启用自动性能调整,这非常重要。
请考虑以下情况:启用自动性能调优,Azure意识到您需要一个包含大约bajillion记录的表的索引。它适用于索引。这个新索引逃脱了您的通知,您不会将其包含在数据库项目定义中。下次部署DACPAC时,它将回滚该索引。并且可能会使你的DTU中出现* @&#,导致令人讨厌的减速和/或排队查询。这不是Code First迁移的问题。