通过ARM模板更新弹性池EDTU

时间:2018-03-28 10:18:03

标签: azure arm-template azure-elastic-scale elastic-database-pool

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

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

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

  

弹性池'池名称的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值提供了适当的大小,我们也不知道为什么它会尝试减小尺寸。

2 个答案:

答案 0 :(得分:1)

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

正如它提到的here,尤其是 StorageMB 可选参数的文档最好不提供此功能,让Azure计算大小。

  

指定弹性池的存储限制(以兆字节为单位)。您无法为Premium版本指定此参数的值。

     

如果未指定此参数,则此cmdlet将计算取决于Dtu参数值的值。我们建议您不要指定StorageMB参数。

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

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

答案 1 :(得分:0)

我的猜测是,池中数据库的当前大小可能大于标准100 eDTU池附带的包含数据存储。该大小的附加存储量为100 GB。存储量是一个可以单独调整的仪表,因此您可以使用eDTU较少但存储量较高的池。标准100 eDTU池上的当前最大存储容量为750 GB。

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

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

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