PowerShell と Azure Resource Manager テンプレートを使用して Azure SQL Database マネージド インスタンスを作成するUse PowerShell with Azure Resource Manager template to create an Azure SQL Database Managed Instance

Azure PowerShell ライブラリと Azure Resource Manager テンプレートを使用して Azure SQL Database マネージド インスタンスを作成できます。Azure SQL Database Managed Instance can be created using Azure PowerShell library and Azure Resource Manager templates.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell を起動するLaunch Azure Cloud Shell

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。It has common Azure tools preinstalled and configured to use with your account. [コピー] をクリックしてコードをコピーし、Cloud Shell に貼り付けて Enter キーを押すだけで、コードを実行することができます。Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Cloud Shell は、次のようにいくつかの方法で起動することができます。There are a few ways to launch the Cloud Shell:

コード ブロックの右上隅にある [使ってみる] をクリックします。Click Try It in the upper right corner of a code block. この記事の Cloud Shell
ブラウザーで Cloud Shell を開きます。Open Cloud Shell in your browser. https://shell.azure.com/powershell
Azure Portal の右上のメニューの [Cloud Shell] ボタンをクリックします。Click the Cloud Shell button on the menu in the upper right of the Azure portal. ポータルの Cloud ShellCloud Shell in the portal

PowerShell をインストールしてローカルで使用する場合、このチュートリアルでは Azure PowerShell モジュール バージョン 5.7.0 以降が必要になります。If you choose to install and use the PowerShell locally, this tutorial requires the Azure PowerShell module version 5.7.0 or later. バージョンを確認するには、Get-Module -ListAvailable AzureRM を実行します。Run Get-Module -ListAvailable AzureRM to find the version. アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to upgrade, see Install Azure PowerShell module. PowerShell をローカルで実行している場合、Connect-AzureRmAccount を実行して Azure との接続を作成することも必要です。If you are running PowerShell locally, you also need to run Connect-AzureRmAccount to create a connection with Azure.

Azure PowerShell コマンドで、定義済みの Azure Resource Manager テンプレートを使用してデプロイを開始できます。Azure PowerShell commands can start deployment using predefined Azure Resource Manager template. テンプレート内に次のプロパティを指定できます。The following properties can be specified in the template:

  • インスタンス名Instance name
  • SQL 管理者のユーザー名とパスワード。SQL administrator username and password.
  • インスタンスのサイズ (コアの数と最大ストレージ サイズ)。Size of the instance (number of cores and max storage size).
  • インスタンスが配置される VNet とサブネット。VNet and subnet where the instance will be placed.
  • インスタンスのサーバー レベルの照合順序 (プレビュー)。Server-level collation of the instance (Preview).

インスタンス名、SQL 管理者ユーザー名、VNet/サブネット、および照合順序は、後で変更することはできません。Instance name, SQL Administrator user name, VNet/subnet, and collation cannot be changed later. その他のインスタンスのプロパティは変更できます。Other instance properties can be changed.


このサンプルでは、お使いのマネージド インスタンスに対する有効なネットワーク環境の作成または既存の VNet の変更が済んでいるものとします。This sample assumes that you have created a valid network environment or modified existing VNet for your Managed Instance. サンプルではコマンドレット New-AzureRmResourceGroupDeploymentGet-AzureRmVirtualNetwork を使用するので、次の PowerShell モジュールをインストールしてあることを確認してください。The sample uses the commandlets New-AzureRmResourceGroupDeployment and Get-AzureRmVirtualNetwork so make sure that you have installed the following PowerShell modules:

Install-Module AzureRM.Network
Install-Module AzureRM.Resources

Azure Resource Manager テンプレートAzure Resource Manager template

インスタンスを作成するために使用されるテンプレートを表すファイル内に、次の内容を格納する必要があります。The following content should be placed in a file that represents a template that will be used to create the instance:

    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {
        "instance": {
            "type": "string"
        "user": {
            "type": "string"
        "pwd": {
            "type": "securestring"
        "subnetId": {
            "type": "string"
    "resources": [
            "name": "[parameters('instance')]",
            "location": "West Central US",
            "tags": {
                "Description":"GP Instance with custom instance collation - Serbian_Cyrillic_100_CS_AS"
            "sku": {
                "name": "GP_Gen4",
                "tier": "GeneralPurpose"
            "properties": {
                "administratorLogin": "[parameters('user')]",
                "administratorLoginPassword": "[parameters('pwd')]",
                "subnetId": "[parameters('subnetId')]",
                "storageSizeInGB": 256,
                "vCores": 8,
                "licenseType": "LicenseIncluded",
                "hardwareFamily": "Gen4", 
                "collation": "Serbian_Cyrillic_100_CS_AS"
            "type": "Microsoft.Sql/managedInstances",
            "identity": {
                "type": "SystemAssigned"
            "apiVersion": "2015-05-01-preview"

サブネットが適切に構成された Azure VNet が既に存在することを前提としています。Assumption is that Azure VNet with the properly configured subnet already exists. これに当てはまらない場合は、別の Azure Resource Manager テンプレートを使用して、独立して実行できるネットワーク環境またはそのテンプレートに含まれるネットワーク環境を準備します。If this is not a case, prepare the network environment using separate Azure Resource Managed template that can be executed independently or included in this template.

このファイルの内容を .Json ファイルとして保存し、ファイル パスを次の PowerShell スクリプトに配置し、スクリプト内のオブジェクトの名前を変更します。Save the content of this file as .json file, put the file path in the following PowerShell script, and change the names of the objects in the script:

$subscriptionId = "ed827499-xxxx-xxxx-xxxx-xxxxxxxxxx"
Select-AzureRmSubscription -SubscriptionId $subscriptionId

# Managed Instance properties
$resourceGroup = "rg_mi"
$location = "West Central US"
$name = "managed-instance-name"
$user = "miSqlAdmin"
$secpasswd = ConvertTo-SecureString "<Put some strong password here>" -AsPlainText -Force

# Network configuration
$vNetName = "my_vnet"
$vNetResourceGroup = "rg_mi_vnet"
$subnetName = "ManagedInstances"
$vNet = Get-AzureRmVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroup
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$subnetId = $subnet.Id

# Deploy Instance using Azure Resource Manager template:
New-AzureRmResourceGroupDeployment  -Name MyDeployment -ResourceGroupName $resourceGroup  `
                                    -TemplateFile 'C:\...\create-managed-instance.json' `
                                    -instance $name -user $user -pwd $secpasswd -subnetId $subnetId

スクリプトが正常に実行されると、すべての Azure サービスおよび構成済み IP アドレスから SQL Database へアクセスできるようになります。Once the script has been successfully run, the SQL Database can be accessed from all Azure services and the configured IP address.

次の手順Next steps

Azure PowerShell の詳細については、Azure PowerShell のドキュメントを参照してください。For more information on the Azure PowerShell, see Azure PowerShell documentation.

その他の SQL Database 用の PowerShell サンプル スクリプトは、Azure SQL Database 用の PowerShell スクリプトのページにあります。Additional SQL Database PowerShell script samples can be found in the Azure SQL Database PowerShell scripts.