使用ARM模板的创建部署期间,Azure ElasticPool“ BadRequest”

问题描述

我有一个任务需要使用ARM模板来“设置带有弹性池的SQL Server,并且2个数据库(从bacpac文件导入)使用Microsoft Adventureworks示例。”

我使用“ 101-sql-elastic-pool-create”模板制作的大部分模板都可以在这里使用:https://github.com/Azure/azure-quickstart-templates/tree/master/101-sql-elastic-pool-create 我将其用于弹性池设置,并使用了本文档(https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-tutorial-deploy-sql-extensions-bacpac)中的示例将.bacpac导入数据库

但是,当我尝试部署此模板(可以在此处查看模板:https://github.com/KarlisAG/SQL_ARM/blob/main/azuredeploy.json)时,它向我抛出错误 ("Resource Microsoft.Sql/servers/elasticPools 'task4sql/elasticp' failed with message '{ "code": "BadRequest","message": "An error occurred while processing this request.","target": null,"details": [],"innererror": [] }' "

因此,最大的问题是(我是绝对的新手)不知道我需要解决的问题,因为除了“ BadRequest”之外,没有授予其他任何信息。对于部署,我使用了两种不同的方法:1)在创建Azure资源组时从VS自动生成的方法; 2)本文档中显示的一种方法,并做了一些我自己的更改,因此它可以为我工作(https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-tutorial-deploy-sql-extensions-bacpac#deploy-the-template) ,从那里我也获得了将.bacpac导入到我新创建的数据库中的代码部分。 [两者都可在同一存储库中使用,分别名为“ Deploy-AzureResourceGroups.ps1”和“ DeployScript.ps1”。] 两种方法都返回相同的错误。

我什至在Azure门户中手动创建了这些东西,以查看其模板的外观,并可能复制了模板中不存在的某些东西,但是从我看到的内容中,我确切地知道它们是自动生成的。 而且当我在Azure门户中检查部署状态时,我还可以看到在弹性池创建期间失败:screenshot from that section available here

那么,有谁知道我应该如何创建这种类型的模板,或者重新创建它的效果很差,或者我遗漏了一些小错误,而这些错误总是会阻止我?

解决方法

因此,经过多次尝试,看来我终于弄清了我做错了什么。除了最后一个更改之外,我仍然不确定哪些更改会有所作为,所以我将写下更改内容,以便其他可能遇到类似问题的人知道他们可以如何解决此问题。

起初,在@stringfellow指出之后,我以为免费试用限制了我执行任何操作,但是当我多次降低DTU到5(从100开始)的水平后,同样的问题仍然存在,所以可能不是问题所在(后来我不得不至少将其更改为50)。我还将Elastic Pool版本从Standard更改为Basic。但是进行这些更改仍然不能解决问题。

最后,在回答@NachoMartínez-Aedo关于api版本的评论后,我开始思考。因为在我发布的代码中我使用了“ 2020-08-01-preview” api版本,但实际上我使用了“ 2014-04-01-preview”,因为当我将所有零件的api版本更改为2020年时一个,然后powershell告诉我(No registered resource provider found for location 'northeurope' and API version '2020-08-01-preview' for type 'servers/databases/extensions'. The supported api-versions are '2014-01-01,2014-04-01,2014-04-01-preview'.)。在再次阅读并记住当我查看一些文档和Azure门户会自动生成模板后,我知道我总是说它们使用2020 API,而不是2014,这让我感到困惑,为什么我也不能使用最新版本。再次阅读该错误时,我看到,它专门告诉“服务器/数据库/扩展”类型不支持2020 API版本,并非所有部分都必须为2014版本(这是我看到时的想法)该错误),因此我尝试将2014年的所有内容更改为2020年,并将扩展api保留为2014年(以前,我认为所有api版本都应该相同,不确定为什么,也许是因为大多数示例和文档都包含了所有内容)具有相同的api版本),并且一切正常,甚至是导入部分,我都很担心。

因此,将来我不太确定是否有更好/较新的方法通过ARM将.bacpac文件导入到新创建的数据库中,还是只需要保留它,以后再使用这种方法即可。 有人知道吗?

我从这里获得了导入扩展名:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-tutorial-deploy-sql-extensions-bacpac ,他们在扩展程序中使用带有2014 api的示例,因此,我尝试将其用于所有部分,但只有在 answer写作期间,我才意识到并再次浏览了该文件,仅将2014年api用于扩展部分,而不用于其他部分,例如服务器,数据库等。

TL; DR 因此,基本上,除了扩展部分(除了最新的api版本仅为“ 2014-04-01-preview”

)外,我都需要使用“ 2020-08-01-preview” api。 ,

我能够部署您的大多数模板,并在自己的订阅中使用类似的参数。在您的屏幕截图中,我们看到您正在使用免费试用订阅。我很好奇这是否由于任何DTU限制而与“ BadRequest”有关。

这是我的部署,当它尝试导入数据库时​​,按预期失败。 enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...