Gyorsútmutató: Azure SQL felügyelt példány létrehozása ARM-sablon segítségével

Ez a rövid útmutató egy Azure Resource Manager-sablon (ARM-sablon) üzembe helyezésének folyamatára összpontosít egy Felügyelt Azure SQL-példány és virtuális hálózat létrehozásához. Felügyelt Azure SQL-példány egy intelligens, teljes mértékben felügyelt, méretezhető felhőalapú adatbázis, amely közel 100% funkció paritásos az SQL Server adatbázismotorjával.

Az ARM-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. A deklaratív szintaxisban a tervezett üzembe helyezést anélkül írja le, hogy megírta volna a programozási parancsok sorozatát az üzembe helyezés létrehozásához.

Ha a környezet megfelel az előfeltételeknek, és ismeri az ARM-sablonok használatát, válassza a Üzembe helyezés az Azure-ban gombot. A sablon megnyílik az Azure Portalon.

Üzembe helyezés az Azure-ra

Előfeltételek

  • Egy Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, hozzon létre egy ingyenes fiókot
  • Általános esetben a felhasználónak az előfizetés hatókörében hozzá kell rendelni a Felügyelt SQL-példány közreműködője szerepkört.
  • Ha egy alhálózaton történik az üzembe helyezés, amely már delegálva van az Azure SQL felügyelt példány számára, a felhasználónak csak a Microsoft.Sql/managedInstances/írási engedélyre van szüksége az előfizetés hatókörében.

A sablon áttekintése

Az ebben a gyorsútmutatóban használt sablon az Azure gyorsindítási sablonokközül való.

Kulcssablon paraméterei

Paraméter neve Alapértelmezett / példa Engedélyezett értékek / korlátozások Description
kezeltPéldányNév sqlmi 1–63 karakter A felügyelt SQL-példány neve
hely resourceGroup().location Felügyelt SQL-példányt támogató Azure-régiók Az összes erőforrás régiója
adminisztrátorBejelentkezés sqladmin Nem lehetnek fenntartott szavak SQL-rendszergazdai bejelentkezés
adminisztrátorBejelentkezésiJelszó Minimális hossz és összetettség kikényszerítése SQL-rendszergazdai jelszó
vCores 8 Érvényes vCore értékek SKU-k szerint Az instance méretének kiszámítása
storageSizeInGB 256 Minimális/maximális szolgáltatási szint A példány számára lefoglalt tárterület
alhálózati cím előtag 10.0.0.0/24 Dedikált, delegált alhálózat szükséges A felügyelt példány alhálózata
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.17.1.54307",
      "templateHash": "2861010078937229146"
    }
  },
  "parameters": {
    "managedInstanceName": {
      "type": "string",
      "metadata": {
        "description": "Enter managed instance name."
      }
    },
    "administratorLogin": {
      "type": "string",
      "metadata": {
        "description": "Enter user name."
      }
    },
    "administratorLoginPassword": {
      "type": "securestring",
      "metadata": {
        "description": "Enter password."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Enter location. If you leave this field blank resource group location would be used."
      }
    },
    "virtualNetworkName": {
      "type": "string",
      "defaultValue": "SQLMI-VNET",
      "metadata": {
        "description": "Enter virtual network name. If you leave this field blank name will be created by the template."
      }
    },
    "addressPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/16",
      "metadata": {
        "description": "Enter virtual network address prefix."
      }
    },
    "subnetName": {
      "type": "string",
      "defaultValue": "ManagedInstance",
      "metadata": {
        "description": "Enter subnet name."
      }
    },
    "subnetPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/24",
      "metadata": {
        "description": "Enter subnet address prefix."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "GP_Gen5",
      "allowedValues": [
        "GP_Gen5",
        "BC_Gen5"
      ],
      "metadata": {
        "description": "Enter sku name."
      }
    },
    "vCores": {
      "type": "int",
      "defaultValue": 16,
      "allowedValues": [
        4,
        8,
        16,
        24,
        32,
        40,
        64,
        80
      ],
      "metadata": {
        "description": "Enter number of vCores."
      }
    },
    "storageSizeInGB": {
      "type": "int",
      "defaultValue": 256,
      "maxValue": 8192,
      "minValue": 32,
      "metadata": {
        "description": "Enter storage size."
      }
    },
    "licenseType": {
      "type": "string",
      "defaultValue": "LicenseIncluded",
      "allowedValues": [
        "BasePrice",
        "LicenseIncluded"
      ],
      "metadata": {
        "description": "Enter license type."
      }
    }
  },
  "variables": {
    "networkSecurityGroupName": "[format('SQLMI-{0}-NSG', parameters('managedInstanceName'))]",
    "routeTableName": "[format('SQLMI-{0}-Route-Table', parameters('managedInstanceName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2021-08-01",
      "name": "[variables('networkSecurityGroupName')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "allow_tds_inbound",
            "properties": {
              "description": "Allow access to data",
              "protocol": "Tcp",
              "sourcePortRange": "*",
              "destinationPortRange": "1433",
              "sourceAddressPrefix": "VirtualNetwork",
              "destinationAddressPrefix": "*",
              "access": "Allow",
              "priority": 1000,
              "direction": "Inbound"
            }
          },
          {
            "name": "allow_redirect_inbound",
            "properties": {
              "description": "Allow inbound redirect traffic to Managed Instance inside the virtual network",
              "protocol": "Tcp",
              "sourcePortRange": "*",
              "destinationPortRange": "11000-11999",
              "sourceAddressPrefix": "VirtualNetwork",
              "destinationAddressPrefix": "*",
              "access": "Allow",
              "priority": 1100,
              "direction": "Inbound"
            }
          },
          {
            "name": "deny_all_inbound",
            "properties": {
              "description": "Deny all other inbound traffic",
              "protocol": "*",
              "sourcePortRange": "*",
              "destinationPortRange": "*",
              "sourceAddressPrefix": "*",
              "destinationAddressPrefix": "*",
              "access": "Deny",
              "priority": 4096,
              "direction": "Inbound"
            }
          },
          {
            "name": "deny_all_outbound",
            "properties": {
              "description": "Deny all other outbound traffic",
              "protocol": "*",
              "sourcePortRange": "*",
              "destinationPortRange": "*",
              "sourceAddressPrefix": "*",
              "destinationAddressPrefix": "*",
              "access": "Deny",
              "priority": 4096,
              "direction": "Outbound"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/routeTables",
      "apiVersion": "2021-08-01",
      "name": "[variables('routeTableName')]",
      "location": "[parameters('location')]",
      "properties": {
        "disableBgpRoutePropagation": false
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-08-01",
      "name": "[parameters('virtualNetworkName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('addressPrefix')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('subnetName')]",
            "properties": {
              "addressPrefix": "[parameters('subnetPrefix')]",
              "routeTable": {
                "id": "[resourceId('Microsoft.Network/routeTables', variables('routeTableName'))]"
              },
              "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
              },
              "delegations": [
                {
                  "name": "managedInstanceDelegation",
                  "properties": {
                    "serviceName": "Microsoft.Sql/managedInstances"
                  }
                }
              ]
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]",
        "[resourceId('Microsoft.Network/routeTables', variables('routeTableName'))]"
      ]
    },
    {
      "type": "Microsoft.Sql/managedInstances",
      "apiVersion": "2021-11-01-preview",
      "name": "[parameters('managedInstanceName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]"
      },
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",
        "storageSizeInGB": "[parameters('storageSizeInGB')]",
        "vCores": "[parameters('vCores')]",
        "licenseType": "[parameters('licenseType')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
      ]
    }
  ]
}

Ezek az erőforrások a sablonban vannak definiálva:

További sablonmintákat Azure gyorsútmutató-sablonok.

A sablon üzembe helyezése

Válassza Próbálja ki a következő PowerShell-kódblokkból az Azure Cloud Shell megnyitásához.

Üzembe helyezési ellenőrzőlista

  1. Előfeltételek ellenőrzése:
    • Aktív Azure-előfizetés
    • Szükséges engedélyek (felügyelt SQL-példány közreműködője vagy Microsoft.Sql/managedInstances/write)
  2. Futtassa az üzembe helyezési parancsot (PowerShell vagy Azure CLI) az alábbi kódrészletek használatával.
  3. Sikeresség ellenőrzése:
    • Az Azure Portalon az üzembe helyezés sikeres volt
    • A felügyelt SQL-példány a célerőforráscsoportban jelenik meg Létrehozás vagy Kész állapottal

Fontos

A felügyelt SQL-példány üzembe helyezése hosszú ideig futó művelet. Az első példány alhálózatban való üzembe helyezése általában sokkal tovább tart, mint a meglévő felügyelt példányokkal rendelkező alhálózaton való üzembe helyezés. Az átlagos kiépítési időkért lásd SQL Felügyelt Példány kezelési műveleteit.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.sql/sqlmi-new-vnet/azuredeploy.json"

$resourceGroupName = "${projectName}rg"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri

Read-Host -Prompt "Press [ENTER] to continue ..."

Üzembe helyezett erőforrások áttekintése

Látogasson el a Azure Portal, és ellenőrizze, hogy a felügyelt példány szerepel-e a kiválasztott erőforráscsoportban. Mivel egy felügyelt példány létrehozása eltarthat egy ideig, előfordulhat, hogy ellenőriznie kell az erőforráscsoport Áttekintés lapján található Telepítések hivatkozást.

Erőforrások törlése

Tartsa meg a felügyelt példányt, ha a Következő lépésekhez szeretne továbblépni, de a további oktatóanyagok elvégzése után törölje a felügyelt példányt és a kapcsolódó erőforrásokat. Felügyelt példány törlése után lásd: Felügyelt példány törlése utánalhálózat törlése.

Az erőforráscsoport törlése:

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
Remove-AzResourceGroup -Name $resourceGroupName

Következő lépések