如果我将更新发布到用于部署 Azure SQL 数据库的 Azure 资源管理器模板,Azure SQL 数据库中的现有数据是否会丢失?

Byr*_*nes 2 azure azure-resource-manager

我正在计划在 VSTS 中进行持续部署过程,其中包括使用 ARM 模板在 Azure 中部署资源组。该资源组将包括一个 SQL 数据库。初始部署后,我不想在后续部署中丢失该数据库中存储的任何数据,因此我需要了解如果对 ARM 模板进行更改,现有数据会发生什么情况,特别是当更改影响到配置时数据库。我是否需要在 CD 流程中添加步骤来检查资源组/数据库是否存在并在部署 ARM 模板之前对其进行备份?我对 blob 存储也有同样的好奇——每次重新部署时它都会被“擦除干净”吗?

Rob*_*gan 5

ARM 模板不会删除和重新配置。他们将:

  1. 检查指定订阅和区域中是否存在请求的资源。如果资源不存在,它将创建它。这假设资源名称可用。例如,如果已经存在 foobar.azurewebsites.net,则配置名称为 FooBar 的 Web 应用程序将会失败。

  2. 确保指定资源中的所有设置都与 ARM 模板中指定的设置匹配。例如,如果您有一个当前扩展到 S0 的 Azure SQL 数据库,并且您的模板将数据库定义为 S3,则您的数据库在部署后将是 S3。

ARM 模板部署将保留现有资源中未在 ARM 模板中指定的任何设置。

编辑:正如 4c74356b41 提到的,不要使用完整部署模式。

作为进一步的保护措施,请使用删除锁锁定您绝对不希望删除的数据库。

  • 需要注意的是,默认情况下,ARM 模板处于增量部署模式(与答案和之前评论中提到的完整部署模式相反)。请参阅 https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-deploy。罗布的回答第一次是正确的,不应该被否决。 (2认同)