Aracılığıyla paylaş


Hızlı Başlangıç: ARM şablonu kullanarak Azure SQL Yönetilen Örneği oluşturma

Bu hızlı başlangıçta, Azure SQL Yönetilen Örneği ve bir sanal ağ (vNet) oluşturmak için Azure Resource Manager şablonu (ARM şablonu) dağıtma işlemine odaklanılır. Azure SQL Yönetilen Örneği, SQL Server veritabanı altyapısıyla neredeyse %100% özellik eşliğine sahip, akıllı, tam olarak yönetilen, ölçeklenebilir bir bulut veritabanıdır.

ARM şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon bildirim temelli söz dizimi kullanır. Bildirim temelli söz diziminde, dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanmayı biliyorsanız Azure'a dağıt düğmesini seçin. Şablon Azure portalında açılır.

Azure'a dağıtma

Önkoşullar

  • Bir Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz bir hesap oluşturun
  • Genel olarak, kullanıcınızın abonelik kapsamında SQL Yönetilen Örneği Katkıda Bulunan rolüne sahip olması gerekir.
  • Azure SQL Yönetilen Örneği'ne tahsis edilmiş bir alt ağda sağlama yapıyorsanız, kullanıcınızın yalnızca abonelik kapsamına atanmış Microsoft.Sql/managedInstances/yazma iznine ihtiyacı vardır.

Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon,Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.

Anahtar şablonu parametreleri

Parametre adı Varsayılan / Örnek İzin verilen değerler / Kısıtlamalar Description
yönetilenÖrnekAdı sqlmi 1–63 karakter SQL yönetilen örneğinin adı
location resourceGroup().location SQL yönetilen örneğini destekleyen Azure bölgeleri Tüm kaynaklar için bölge
yöneticiGiriş sqladmin Rezerve edilmiş kelimeler olamaz SQL yöneticisi oturum açma
yöneticiGirişParolası En düşük uzunluk ve karmaşıklık zorunlu kılındı SQL yönetici parolası
vCores 8 SKU başına geçerli sanal çekirdek değerleri Örneğin boyutunu hesapla
storageSizeInGB 256 Hizmet katmanı başına en az/en fazla Örneğe ayrılan depolama alanı
alt ağ adres öneki 10.0.0.0/24 Özel, delege edilmiş alt ağ gerekiyor Yönetilen örnek için alt ağ
{
  "$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'))]"
      ]
    }
  ]
}

Bu kaynaklar şablonda tanımlanır:

daha fazla şablon örneği Azure Hızlı Başlangıç Şablonlarıbulunabilir.

Şablonu dağıtma

Azure Cloud Shell'i açmak için aşağıdaki PowerShell kod bloğundan Deneyin seçin.

Dağıtım denetim listesi

  1. Önkoşulları doğrulayın:
    • Etkin Azure aboneliği
    • Gerekli izinler (SQL Yönetilen Örneği Katkıda Bulunanı veya Microsoft.Sql/managedInstances/write)
  2. Aşağıdaki kod parçacıklarını kullanarak dağıtım komutunu (PowerShell veya Azure CLI) çalıştırın.
  3. Başarılı olduğunu doğrulayın:
    • Azure portalında dağıtım Başarılı olarak görünür.
    • SQL yönetilen örneği, hedef kaynak grubunda Oluşturuluyor veya Hazır durumda görünüyor

Önemli

SQL yönetilen örneği dağıtmak uzun süre çalışan bir işlemdir. Alt ağdaki ilk örneğin dağıtımı genellikle mevcut yönetilen örneklere sahip bir alt ağa dağıtılmaktan çok daha uzun sürer. Ortalama sağlama sürelerini incelemek için SQL Yönetilen Örneği yönetim işlemleri'ye bakın.

$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 ..."

Dağıtılan kaynakları gözden geçirme

Azure portalı ziyaret edin ve yönetilen örneğin seçtiğiniz kaynak grubunda olduğunu doğrulayın. Yönetilen örnek oluşturmak biraz zaman alabileceğinden, kaynak grubunuzun Genel Bakış sayfasındaki Dağıtımlar bağlantısını denetlemeniz gerekebilir.

Kaynakları temizleme

Sonraki adımlargitmek istiyorsanız yönetilen örneği koruyun, ama ekstra dersleri tamamladıktan sonra yönetilen örneği ve ilgili kaynakları silin. Yönetilen bir örneği sildikten sonra, bir alt ağı silmek için bkz. .

Kaynak grubunu silmek için:

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

Sonraki adımlar