0

最初,我们通过 ARM 模板在 Azure 中部署了数据库弹性池。该池为标准版,共有 50 个 EDTU。通过发布管理从 VSTS 部署应用程序时会发生这种情况。

在某些时候,数据库的大小增加了,因此我们不得不增加池的 EDTU 以获得一些额外的空间。我们直接从门户网站执行此操作,并且没有通过 ARM 模板进行部署。我们将 EDTU 增加到 100。

现在,当我们想通过 VSTS 重新部署应用程序并使用 ARM 模板时,就会出现问题。我们更新了 ARM 模板中的值以反映我们在门户中配置的值 (100),但我们收到以下错误。

无法减少弹性池“pool-name”的 DTU 或存储限制,因为这不会为其数据库提供足够的存储空间。"

我们用于池的 ARM 模板如下所示

{
  "comments": "The elastic pool that hosts all the databases",
  "apiVersion": "2014-04-01-preview",
  "type": "elasticPools",
  "location": "[resourceGroup().location]",
  "dependsOn": ["[concat('Microsoft.Sql/Servers/', variables('sqlServerName'))]"],
  "name": "[variables('elasticPoolName')]",
  "properties": {
      "edition": "Standard",
      "dtu": "100",
      "databaseDtuMin": "0",
      "databaseDtuMax": "10",
   }
}

该消息是描述性的,但我们不明白为什么它会尝试减小大小,即使我们通过 EDTU 值提供了适当的大小。

4

2 回答 2

1

我们部分确定了问题发生的原因。

正如这里提到的,特别是StorageMB可选参数的文档最好不要提供这个,让 Azure 计算大小。

指定弹性池的存储限制(以 MB 为单位)。对于 Premium 版,您不能指定此参数的值。

如果不指定此参数,则此 cmdlet 将根据 Dtu 参数的值计算一个值。我们建议您不要指定 StorageMB 参数。

如最初的帖子中所述,我们没有在 ARM 模板中指定 StorageMB 选项,这是由 Azure 设置的。没有提到和不清楚的是,这只是第一次发生。

因此,当我们第一次部署 50 个 EDTU 时,池的大小设置为 50 GB。当我们再次部署并将 EDTU 设置为 100 时,大小仍为 50GB,这令人困惑。因此,解决方案和可能更安全的方法是始终为池指定 StorageMB 选项,以便更好地查看和控制正在发生的事情。

于 2018-04-01T09:07:58.860 回答
0

我的猜测是,池中数据库的当前大小可能大于标准 100 eDTU 池附带的包含数据存储。该大小包含的存储量为 100 GB。存储量是一个可以单独调整的计量器,以便您拥有具有较少 eDTU 但存储量较高的池。标准 100 eDTU 池上的当前最大存储容量为 750 GB。

我想知道是否有人进入门户并调整了池的最大数据存储大小。如果是这种情况,并且池中的数据库现在超过 100 GB 标记,那么您看到的这个错误是有道理的。由于模板没有指定更大的数据存储量,所以我的猜测是系统将其默认为包含的 100 GB 并尝试应用它,现在可能太小了。

我建议检查门户以了解池中数据库当前使用的存储总大小。如果它超过 100 GB,那么您需要更新模板以包括您正在使用的最大大小的附加设置。

如果它现在不超过 100 GB,我不确定它在抱怨什么。

于 2018-03-28T11:47:10.880 回答