sql-server - 将数据库更改推送到我的 SQL Azure 数据库

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

有没有办法在 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/

相关文章:

java - Jenkins - 将源代码编译成 jarfile,用作工件

tfs - Cruise Control .Net 与 Team Foundation 构建

sql-server - SQL隐藏空值并用并集连接结果

c# - 无法确定 Azure 移动服务 DataObject 中类型的复合主键排序

sql - SET NOEXEC ON 如何工作?

node.js - Azure 函数 NodeJS : Https Request not working when using Azure Visual Studio Code Extension

azure - 访问Azure逻辑应用中操作内的操作名称

continuous-integration - VSTS 发布管道找不到已发布的工件

mysql - 在选择查询中使用变量

sql - 使用字符串变量对表的每一行执行存储过程