クイックスタート: Azure SQL Managed Instance の作成
[アーティクル] 08/16/2024
18 人の共同作成者
フィードバック
この記事の内容
適用対象: Azure SQL Managed Instance
このクイックスタートでは、Azure portal、PowerShell、Azure CLI を使用して Azure SQL Managed Instance のデプロイを作成する方法について説明します。
前提条件
Azure サブスクリプション。 Azure サブスクリプションを持っていない場合は無料アカウント を作成する
一般的なケースでは、サブスクリプション スコープで SQL Managed Instance Contributor ロールをユーザーに割り当てる必要があります。
Azure SQL Managed Instance に既に委任されているサブネットでプロビジョニングする場合、ユーザーに必要なのは、サブスクリプション スコープで割り当てられた Microsoft.Sql/managedInstances/write アクセス許可のみです。
Az.SQL PowerShell モジュールの最新バージョンまたは Azure CLI の最新バージョン。
制限については、サポートされているリージョン とサポートされているサブスクリプションの種類 に関するセクションを参照してください。
Azure SQL Managed Instance の作成
Azure Portal、PowerShell、Azure CLI を使用して Azure SQL Managed Instance のデプロイを作成できます。
次の点について検討してください。
Azure portal、PowerShell、Azure CLI、REST API を使用するその他のツールを使用してプロビジョニング プロセスをキャンセル できます。
長期の復元やインスタンスのスケーリングなど、同じサブネット内のその他の操作に影響 された場合、インスタンスのデプロイは遅延します。
リソース グループの Managed Instance を表示するには、リソース グループの読み取り アクセス許可が必要です。
重要
Managed Instance のデプロイは、長期の操作 です。 サブネットに最初のインスタンスのデプロイは、通常は既存のインスタンスでサブネットへのデプロイよりもはるかに時間がかかります。
Azure ポータル
Azure Portal でインスタンスを作成するには、まず Azure Portal にサインインし、[Azure SQL Managed Instanceの作成] ページに情報を記入する必要があります。
インスタンスを作成するには、次の手順に従います。
Azure portal にサインインします。
Azure portal の左側のメニューにある [Azure SQL] を選択します。 [Azure SQL] がリストに記載されていない場合、[すべてのサービス] を選択し、検索ボックスに“Azure SQL “と入力します。
[+ 作成] を選び、[Select SQL deployment option](SQL デプロイ オプションの選択) ページを開きます。 [SQL マネージド インスタンス] タイルの [詳細の表示] を選択すると、Azure SQL Managed Instance に関する追加情報を表示できます。
ドロップダウンから[単一インスタンス] を選択し、[作成] を選択して[Azure SQL Managed Instanceの作成] ページを開きます。
[基本] タブ
[基本] タブに必須情報を記入します。これは、SQL Managed Instance をプロビジョニングするための最小限の要件です。
次のテーブルでは、[基本] タブで必要な情報の詳細が示されます。
設定
提案された値
説明
サブスクリプション
該当するサブスクリプション。
新しいリソースを作成するアクセス許可を与えるサブスクリプション。
リソース グループ
新規または既存のリソース グループ。
有効なリソース グループ名については、名前付け規則と制限 に関するページを参照してください。
Managed Instance の名前
有効な名前。
有効な名前については、名前付け規則と制限事項 に関するページを参照してください。
リージョン
マネージド インスタンスの作成先となるリージョン。
リージョンについては、「Azure リージョン 」を参照してください。
インスタンス プールに所属
インスタンス プール 内にこのインスタンスを作成する場合は、[はい] を選択します。
認証方法
SQL 認証を使用する
このクイックスタートを実行するには、SQL 認証を使用します。 SQL 認証と Microsoft Entra 認証の両方を使用することも選択できます。
マネージド インスタンス管理者ログイン
有効なユーザー名。
有効な名前については、名前付け規則と制限事項 に関するページを参照してください。 serveradmin
は予約済みのサーバー レベルのロールであるため、使用しないでください。
パスワード
有効なパスワード。
パスワードは 16 文字以上で、定義された複雑さの要件 を満たす必要があります。
[Managed Instance の詳細] で、[コンピューティングとストレージ ]セクションの[Managed Instance の構成] を選択し、[コンピューティングとストレージ] ページを開きます。
次のテーブルでは、サンプル SQL Managed Instance のコンピューティングおよびストレージの推奨事項が示されます。
設定
提案された値
説明
サービス レベル
汎用
General Purpose レベルはほとんどの実稼動ワークロードに適しており、デフォルトのオプションです。 改善された Next-gen General Purpose サービス レベルは、ほとんどのワークロードに対しても最適な選択肢です。 詳細については、「リソースの制限 」を参照してください。
ハードウェアの世代
Standard シリーズ (Gen5)
Standard シリーズ (Gen5) は、コンピューティングおよびメモリの制限を定義するデフォルトのハードウェア世代 です。 Standard シリーズ (Gen5) が既定値です。
仮想コア
値を指定します。
仮想コアは、ワークロード用に常時プロビジョニングされるコンピューティング リソースの正確な数量を表します。 8 つの仮想コア が既定値です。
ストレージ (GB)
値を指定します。
GB 単位のストレージ サイズ。予想されるデータ サイズに応じて選択してください。
SQL Server ライセンス
該当するライセンス モデルを選択します。
従量課金制、Azure ハイブリッド特典 で既存の SQL ライセンスの使用、ハイブリッド フェールオーバーの権限 の有効化のいずれかを選択します
バックアップ ストレージの冗長性
geo 冗長バックアップ ストレージ 。
バックアップ ストレージ用の Azure 内のストレージ冗長 。 geo 冗長バックアップ ストレージがデフォルトで推奨されますが、geo ゾーン冗長、ゾーン冗長、ローカル冗長はコストの柔軟性が高さおよび単一リージョンのデータ所在地を実現します。
コンピューティングとストレージ の構成を指定したら、[適用] を使用して設定を保存し、[Azure SQL Managed Instance の作成] ページに戻ります。 [次へ] を選択して[ネットワーク] タブに移動します。
[ネットワーク] タブ
[ネットワーク] タブにオプションの情報を記入します。この情報を省略すると、ポータルによって既定の設定が適用されます。
次のテーブルでは、[ネットワーク] タブに情報の詳細が示されます。
設定
提案された値
説明
Virtual Network/サブネット
新規に作成するか、既存の Virtual Network を使います。
ネットワークまたはサブネットが使用できない場合は、新しいマネージド インスタンスのターゲットとして選択する前に、ネットワーク要件を満たすように変更する 必要があります。
接続の種類
適切な接続の種類を選択します。
詳細については、「接続の種類 」を参照してください。
パブリック エンドポイント
[無効にする] を選択します。
パブリック データ エンドポイントを介してマネージド インスタンスにアクセスできるようにするには、このオプションを有効にする必要があります。
許可するアクセス元 (パブリック エンドポイント が有効な場合)
[アクセスなし] を選択します。
ポータルは、パブリック エンドポイントを使用してセキュリティ グループを構成します。 シナリオに基づいて、次のオプションを 1 つ選択します。 Azure サービス :Power BI または別のマルチテナント サービスから接続する場合は、このオプションをお勧めします。 インターネット :マネージド インスタンスを迅速に作成する必要がある場合にテスト目的で使用します。 運用環境では推奨されません。 アクセスなし :このオプションでは拒否 セキュリティ規則が作成されます。 パブリック エンドポイントを介してマネージド インスタンスにアクセスできるようにするには、この規則を変更します。 パブリック エンドポイントのセキュリティの詳細については、「パブリック エンドポイントで安全に Azure SQL Managed Instance を使用する 」を参照してください。
マネージド インスタンスを作成する前に、 [確認と作成] を選択して、選択内容を確認できます。 または、[次へ: セキュリティ設定] を選択してセキュリティ設定を構成します。
[セキュリティ] タブ
このクイックスタートを実行するには、[セキュリティ] タブの設定を既定値のままにします。
マネージド インスタンスを作成する前に、 [確認と作成] を選択して、選択内容を確認できます。 または、さらにカスタム設定を構成します。これを行うには、 [次へ: 追加設定] を選択します。
追加設定
[追加設定] タブに任意の情報を記入します。この情報を省略すると、ポータルはデフォルトの設定を適用します。
次のテーブルでは、[追加設定] タブに情報の詳細が示されています。
設定
提案された値
説明
Collation
マネージド インスタンスに対して使用する照合順序を選択します。 SQL Server からデータベースを移行する場合は、SELECT SERVERPROPERTY(N'Collation')
を使用してソースの照合順序を確認し、その値を使用してください。
照合順序の詳細については、「サーバーの照合順序の設定または変更 」を参照してください。
タイム ゾーン
マネージド インスタンスで監視するタイム ゾーンを選択します。
詳細については、タイム ゾーン に関するページを参照してください。
geo レプリケーション
このため、 [いいえ] を選択します。
Managed Instance をフェールオーバー グループのセカンダリとして使用する場合にのみ、このオプションを有効にします。
メンテナンス期間
適切なメンテナンス期間を選択します。
インスタンスがサービスによって保守 される[スケジュール]を指定します。
マネージド インスタンスを作成する前に、 [確認と作成] を選択して、選択内容を確認できます。 または、 [次へ: タグ] を選択して Azure タグを構成します (推奨)。
Azure Resource Manager テンプレート (ARM テンプレート) でリソースにタグを追加します。 タグ は、リソースを論理的に整理するために役立ちます。 タグの値はコスト レポートに表示され、タグによる他の管理アクティビティの分類に使用できます。 少なくとも新しい SQL マネージド インスタンスにはタグ付けすることを検討してください。所有者タグを使用して作成者を識別し、環境タグを使用してシステムの用途 (運用、開発など) を識別します。詳細については、「Azure リソースの名前付けおよびタグ付けの戦略を作成する 」を参照してください。
[確認と作成] を選択して続行します。
確認と作成
[確認と作成] タブで、選択した内容を確認したら、[作成] を選択して Managed Instance をデプロイします。
デプロイの進行状況を監視する
[通知] アイコンを選択してデプロイの状態を表示します。
通知内の [デプロイを実行しています] を選択して [SQL Managed Instance] ウィンドウを開き、デプロイの進行状況を詳しく監視します。
デプロイが完了したら、リソース グループに移動して Managed Instance を表示します。
ヒント
Web ブラウザーを閉じているか、デプロイの進行状況画面から離れている場合、Azure Portal、PowerShell、Azure CLI の Managed Instance の[概要] ページを介してプロビジョニング操作を監視 できます。
PowerShell を使用してインスタンスを作成します。 詳細については、「PowerShell で SQL Managed Instance の作成 」を確認してください。
まず、変数を設定します。
$NSnetworkModels = "Microsoft.Azure.Commands.Network.Models"
$NScollections = "System.Collections.Generic"
# The SubscriptionId in which to create these objects
$SubscriptionId = '<Enter subscription ID>'
# Set the resource group name and location for your managed instance
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "eastus2"
# Set the networking values for your managed instance
$vNetName = "myVnet-$(Get-Random)"
$vNetAddressPrefix = "10.0.0.0/16"
$defaultSubnetName = "myDefaultSubnet-$(Get-Random)"
$defaultSubnetAddressPrefix = "10.0.0.0/24"
$miSubnetName = "MISubnet-$(Get-Random)"
$miSubnetAddressPrefix = "10.0.0.0/24"
#Set the managed instance name for the new managed instance
$instanceName = "mi-name-$(Get-Random)"
# Set the admin login and password for your managed instance
$miAdminSqlLogin = "SqlAdmin"
$miAdminSqlPassword = "ChangeThisPassword!!"
# Set the managed instance service tier, compute level, and license mode
$edition = "General Purpose"
$vCores = 8
$maxStorage = 256
$computeGeneration = "Gen5"
$license = "LicenseIncluded" #"BasePrice" or LicenseIncluded if you have don't have SQL Server licence that can be used for AHB discount
$dbname = 'SampleDB'
次に、リソース グループを作成します。
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $location
Tag = @{Owner="SQLDB-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
その後、仮想ネットワークを作成します。
# Configure virtual network, subnets, network security group, and routing table
$networkSecurityGroupParams = @{
Name = 'myNetworkSecurityGroupMiManagementService'
ResourceGroupName = $resourceGroupName
Location = $location
}
$networkSecurityGroupMiManagementService = New-AzNetworkSecurityGroup @networkSecurityGroupParams
$routeTableParams = @{
Name = 'myRouteTableMiManagementService'
ResourceGroupName = $resourceGroupName
Location = $location
}
$routeTableMiManagementService = New-AzRouteTable @routeTableParams
$virtualNetworkParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vNetName
AddressPrefix = $vNetAddressPrefix
}
$virtualNetwork = New-AzVirtualNetwork @virtualNetworkParams
$subnetConfigParams = @{
Name = $miSubnetName
VirtualNetwork = $virtualNetwork
AddressPrefix = $miSubnetAddressPrefix
NetworkSecurityGroup = $networkSecurityGroupMiManagementService
RouteTable = $routeTableMiManagementService
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnetConfigParams | Set-AzVirtualNetwork
$virtualNetwork = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $resourceGroupName
$subnet= $virtualNetwork.Subnets[0]
# Create a delegation
$subnet.Delegations = New-Object "$NScollections.List``1[$NSnetworkModels.PSDelegation]"
$delegationName = "dgManagedInstance" + (Get-Random -Maximum 1000)
$delegationParams = @{
Name = $delegationName
ServiceName = "Microsoft.Sql/managedInstances"
}
$delegation = New-AzDelegation @delegationParams
$subnet.Delegations.Add($delegation)
Set-AzVirtualNetwork -VirtualNetwork $virtualNetwork
$miSubnetConfigId = $subnet.Id
$allowParameters = @{
Access = 'Allow'
Protocol = 'Tcp'
Direction= 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = 'VirtualNetwork'
DestinationAddressPrefix = '*'
}
$denyInParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$denyOutParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Outbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$networkSecurityGroupParams = @{
ResourceGroupName = $resourceGroupName
Name = "myNetworkSecurityGroupMiManagementService"
}
$networkSecurityGroup = Get-AzNetworkSecurityGroup @networkSecurityGroupParams
$allowRuleParams = @{
Access = 'Allow'
Protocol = 'Tcp'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = 'VirtualNetwork'
DestinationAddressPrefix = '*'
}
$denyInRuleParams = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$denyOutRuleParams = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Outbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$networkSecurityGroup |
Add-AzNetworkSecurityRuleConfig @allowRuleParams -Priority 1000 -Name "allow_tds_inbound" -DestinationPortRange 1433 |
Add-AzNetworkSecurityRuleConfig @allowRuleParams -Priority 1100 -Name "allow_redirect_inbound" -DestinationPortRange 11000-11999 |
Add-AzNetworkSecurityRuleConfig @denyInRuleParams -Priority 4096 -Name "deny_all_inbound" |
Add-AzNetworkSecurityRuleConfig @denyOutRuleParams -Priority 4096 -Name "deny_all_outbound" |
Set-AzNetworkSecurityGroup
最後に、インスタンスを作成します。
# Create credentials
$secpassword = ConvertTo-SecureString $miAdminSqlPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList @($miAdminSqlLogin, $secpassword)
$managedInstanceParams = @{
Name = $instanceName
ResourceGroupName = $resourceGroupName
Location = $location
SubnetId = $miSubnetConfigId
AdministratorCredential = $credential
StorageSizeInGB = $maxStorage
VCore = $vCores
Edition = $edition
ComputeGeneration = $computeGeneration
LicenseType = $license
}
New-AzSqlInstance @managedInstanceParams
Azure CLI を使用してインスタンスを作成します。 詳細については、「Azure CLI で SQL Managed Instance の作成 」を確認してください。
まず、変数を設定します。
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-azuresql-rg-$randomIdentifier"
tag="create-managed-instance"
vNet="msdocs-azuresql-vnet-$randomIdentifier"
subnet="msdocs-azuresql-subnet-$randomIdentifier"
nsg="msdocs-azuresql-nsg-$randomIdentifier"
route="msdocs-azuresql-route-$randomIdentifier"
instance="msdocs-azuresql-instance-$randomIdentifier"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
dbname="SampleDB"
echo "Using resource group $resourceGroup with login: $login, password: $password..."
次に、リソース グループを作成します。
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag
その後、仮想ネットワークを作成します。
echo "Creating $vNet with $subnet..."
az network vnet create --name $vNet --resource-group $resourceGroup --location "$location" --address-prefixes 10.0.0.0/16
az network vnet subnet create --name $subnet --resource-group $resourceGroup --vnet-name $vNet --address-prefixes 10.0.0.0/24 --delegations Microsoft.Sql/managedInstances
echo "Creating $nsg..."
az network nsg create --name $nsg --resource-group $resourceGroup --location "$location"
az network nsg rule create --name "allow_management_inbound" --nsg-name $nsg --priority 100 --resource-group $resourceGroup --access Allow --destination-address-prefixes 10.0.0.0/24 --destination-port-ranges 9000 9003 1438 1440 1452 --direction Inbound --protocol Tcp --source-address-prefixes "*" --source-port-ranges "*"
az network nsg rule create --name "allow_misubnet_inbound" --nsg-name $nsg --priority 200 --resource-group $resourceGroup --access Allow --destination-address-prefixes 10.0.0.0/24 --destination-port-ranges "*" --direction Inbound --protocol "*" --source-address-prefixes 10.0.0.0/24 --source-port-ranges "*"
az network nsg rule create --name "allow_health_probe_inbound" --nsg-name $nsg --priority 300 --resource-group $resourceGroup --access Allow --destination-address-prefixes 10.0.0.0/24 --destination-port-ranges "*" --direction Inbound --protocol "*" --source-address-prefixes AzureLoadBalancer --source-port-ranges "*"
az network nsg rule create --name "allow_management_outbound" --nsg-name $nsg --priority 1100 --resource-group $resourceGroup --access Allow --destination-address-prefixes AzureCloud --destination-port-ranges 443 12000 --direction Outbound --protocol Tcp --source-address-prefixes 10.0.0.0/24 --source-port-ranges "*"
az network nsg rule create --name "allow_misubnet_outbound" --nsg-name $nsg --priority 200 --resource-group $resourceGroup --access Allow --destination-address-prefixes 10.0.0.0/24 --destination-port-ranges "*" --direction Outbound --protocol "*" --source-address-prefixes 10.0.0.0/24 --source-port-ranges "*"
echo "Creating $route..."
az network route-table create --name $route --resource-group $resourceGroup --location "$location"
az network route-table route create --address-prefix 0.0.0.0/0 --name "primaryToMIManagementService" --next-hop-type Internet --resource-group $resourceGroup --route-table-name $route
az network route-table route create --address-prefix 10.0.0.0/24 --name "ToLocalClusterNode" --next-hop-type VnetLocal --resource-group $resourceGroup --route-table-name $route
echo "Configuring $subnet with $nsg and $route..."
az network vnet subnet update --name $subnet --network-security-group $nsg --route-table $route --vnet-name $vNet --resource-group $resourceGroup
最後に、インスタンスを作成します。
# This step will take awhile to complete. You can monitor deployment progress in the activity log within the Azure portal.
echo "Creating $instance with $vNet and $subnet..."
az sql mi create --admin-password $password --admin-user $login --name $instance --resource-group $resourceGroup --subnet $subnet --vnet-name $vNet --location "$location"
ネットワーク設定の確認
リソース グループのルート テーブル リソースを選択して、SQL Managed Instance Virtual Network から(および Virtual Network 内の)トラフィックをルーティングするユーザー定義のルート テーブル オブジェクトとエントリ を確認します。 ルートを変更または追加するには、ルート テーブルの設定で [ルート] を開きます。
[ネットワーク セキュリティ グループ] のオブジェクトを選択し、受信および送信セキュリティ規則を確認します。 ルールを変更または追加するには、ネットワーク セキュリティ グループの設定で [受信セキュリティ規則] と [送信セキュリティ規則] を開きます。
重要
SQL Managed Instance のパブリック エンドポイントを有効 にした場合、ポートを開放してパブリック インターネットから SQL Managed Instance にネットワーク トラフィックを許可します。
データベースの作成
Azure Portal、PowerShell、Azure CLI を使用して新しいデータベースを作成できます。
Azure Portal のインスタンスに新しいデータベースを作成するには、次の手順に従います。
Azure Portal で、[SQL Managed Instance] に移動します。
[概要] ページで、SQL Managed Instance に[+ 新しいデータベース] を選択し、[Azure SQL Managed Database の作成] ページを開きます。
[基本] タブでデータベースの名前を指定します。
[データ ソース] タブで、空のデータベースに[なし] を選択するか、バックアップからデータベースを復元します。
残りのタブで残りの設定を構成し、[確認と作成] を選択して選択内容を検証します。
[作成] を使用してデータベースをデプロイします。
PowerShell を使用してデータベースを作成します。
$databaseParams = @{
ResourceGroupName = $resourceGroupName
InstanceName = $instanceName
Name = $dbname
Collation = 'Latin1_General_100_CS_AS_SC'
}
New-AzSqlInstanceDatabase @databaseParams
Azure CLI を使用してデータベースを作成します。
az sql midb create -g $resourceGroup --mi $instance -n $dbname --collation Latin1_General_100_CS_AS_SC
SQL Managed Instance への接続情報を取得する
SQL Managed Instance に接続するには、次の手順に従って、ホスト名と完全修飾ドメイン名 (FQDN) を取得します。
リソース グループに戻り、作成された SQL Managed Instance オブジェクトを選択します。
[概要] タブで、 [ホスト] プロパティを探します。 [クリップボードにコピー] ボタンをクリックして、次のクイックスタートで使用するマネージド インスタンスのホスト名をクリップボードにコピーします。
コピーされた値は、SQL Managed Instance への接続に使用できる完全修飾ドメイン名 (FQDN) を表します。 次のアドレス例に似ています。your_host_name.a1b2c3d4e5f6.database.windows.net 。
関連するコンテンツ
次の関連コンテンツを確認します。
既存の SQL Server データベースをオンプレミスから SQL Managed Instance に復元する
次のステップ
アプリケーションを SQL Managed Instance に接続します 。