Azure SqlServer和SqlDatabase资源组

时间:2018-07-11 21:08:47

标签: azure-sql-database azure-deployment azure-resource-group

我想使用Azure在单个ResourceGroup下为包含以下内容的客户端创建环境:

  • X个Web服务器
  • Y个应用服务器
  • 1个数据库

理想情况下,数据库将托管在属于不同资源组的服务器上,因此我可以在多个客户端之间利用弹性池。

当我尝试使用New-AzureRmResourceGroupDeployment来执行此操作时,收到一条错误消息,指出找不到父SqlServer。

我已经通过PowerShell创建了SqlServer:

New-AzureRmSqlServer -servername "MyServer" -ResourceGroupName "Common" -Location "South Central US"

然后我尝试通过以下方式部署ClientA:

New-AzureRmResourceGroup -Name 'ClientA' -Location "South Central US"
New-AzureRmResourceGroupDeployment -ResourceGroupName 'ClientA' -TemplateFile azure.ClientDeployment.json -Client 'ClientA'

我的部署配置是:

{
  "parameters": { ... }
  "variables": { ... }
  "resources": [

    {
      "name": "MySqlServer/ClientA",
      "type": "Microsoft.Sql/servers/databases",
      "location": "[resourceGroup().location]",
      "apiVersion": "2014-04-01",
      "tags": {},
      "location": "[resourceGroup().location]",
      "properties": {
        "edition": "Basic"
      },
    }

  ],
  "outputs": {  }
}

导致错误消息:

New-AzureRmResourceGroupDeployment : 5:04:33 PM - Resource Microsoft.Sql/servers/databases 'MySqlServer/ClientA' failed with message '{
  "code": "NotFound",
  "message": "Server 'MySqlServer' does not exist in resource group 'ClientA' in subscription '{...}'.",
  "target": null,
  "details": [],
  "innererror": []
}

请注意,两个资源组(Common和ClientA)都位于相同的订阅和位置。

是否可能有一个资源组的SqlServer部分和另一个资源组的SqlDatabase部分?

1 个答案:

答案 0 :(得分:0)

到目前为止,无法将具有一个订阅(位置)的SQLServer与其数据库分离到另一个订阅。

MSDN forum

中查看类似的问题
  

Azure资源组也被定义为以下对象的强大容器   它的资源,它定义了它们的身份(查看所有资源的URI   Azure资源),以及基于角色的访问权限的传播,以及   控制资源生存期-从而授予对资源组的访问权限   授予其资源的权限,删除资源组将删除   它包含的资源。

     

结合以上内容意味着包含   服务器还必须包含在该服务器上托管/嵌套的数据库。

即使您尝试在单个预订中创建所有数据库,然后尝试将特定的SQLDB资源组移到之后。不允许这样做(在门户网站中)

对于您的情况,我想在一个通用订阅中创建所有服务,在该订阅中,所有客户可以共享或轻松访问该位置。

您可以使用AzureSpeed从当前位置获取所有位置的延迟,并尝试在对所有客户端延迟最小的公共位置创建订阅。