0

我有一个任务,我需要使用 ARM 模板来“设置带有弹性池的 SQL 服务器和 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 门户中检查部署状态时,我还可以看到在创建弹性池期间它失败了:该部分的屏幕截图可在此处获得

那么有谁知道我应该如何创建这种类型的模板,还是我重新创建它很糟糕,或者我错过了一些一直阻止我的小错误?

4

2 回答 2

2

因此,经过多次尝试,我似乎终于弄清楚我做错了什么。除了最后一个,我仍然不确定哪些更改产生了影响,所以我会写下我所做的更改,以便其他可能面临类似问题的人知道他们可以做些什么来解决这个问题。

起初,在@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 版本)并且一切正常,

因此,将来我不太确定是否有更好/更新的方法将 .bacpac 文件导入到使用 ARM 新创建的数据库中,或者只需要保持原样并在将来使用相同的方法。有人知道吗?

我从这里得到了导入扩展:https ://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-tutorial-deploy-sql-extensions-bacpac ,他们在其中使用了 2014 年的示例api 用于扩展,因此我尝试将它用于我的所有部分,但只有在写这个答案的过程中,我才意识到并再次查看它,他们仅将 2014 api 用于扩展部分而不是其他部分,如服务器、数据库等。

TL;DR 所以基本上我需要使用 '2020-08-01-preview' api 来处理扩展部分之外的所有内容,其中最新的 api 版本只有 '2014-04-01-preview'

于 2020-10-28T10:12:35.217 回答
0

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

这是我的部署,它在尝试导入数据库时​​按预期失败。 在此处输入图像描述

于 2020-10-28T02:58:18.373 回答