快速入門:建立 Azure SQL 受控執行個體
在此文章
適用於: Azure SQL 受控執行個體
本快速入門會教您使用 Azure 入口網站、PowerShell 和 Azure CLI 來建立 Azure SQL 受控執行個體 的部署。
必要條件
如需了解限制,請參閱支援的區域 和支援的訂用帳戶類型 。
建立 Azure SQL 受控執行個體
您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來建立 Azure SQL 受控執行個體的部署。
請考慮下列事項:
您可以透過 Azure 入口網站,或透過 PowerShell 或 Azure CLI 或使用 REST API 的其他工具來取消佈建程序 。
如果執行個體部署受到相同子網路中其他作業 的影響,例如長時間執行的還原或調整執行個體,則執行個體部署會延遲。
需要資源群組的讀取 權限,才能查看資源群組中的受控執行個體。
重要
部署受控執行個體是長時間執行的作業 。 在子網路中部署第一個執行個體,所需時間通常比部署到具有現有執行個體的子網路還要久。
登入 Azure 入口網站
若要在 Azure 入口網站中建立執行個體,您必須先登入 Azure 入口網站,然後在 [建立 Azure SQL 受控執行個體] 頁面上填寫資訊 。
若要建立執行個體,請遵循下列步驟:
登入 Azure 入口網站 。
在 Azure 入口網站的左側功能表上選取 [Azure SQL]。 如果 [Azure SQL] 不在清單中,請選取 [所有服務],然後在搜尋方塊中輸入 Azure SQL 。
選取 [+ 建立] 以開啟 [選取 SQL 部署選項] 頁面。 您可以在 [SQL 受控執行個體] 圖格上選取 [顯示詳細資料],以檢視有關 Azure SQL 受控執行個體的其他資訊。
從下拉式清單中選擇 [Singe 執行個體 ],然後選取 [建立] 以開啟 [建立 Azure SQL 受控執行個體 ] 頁面。
[基本] 索引標籤
填寫 [基本] 索引標籤上所需的必要資訊,這是佈建 SQL 受控執行個體的最低要求。
下表提供 [基本] 索引標籤上 所需資訊的詳細資料:
設定
建議的值
描述
訂用帳戶
您的訂用帳戶。
讓您有權建立新資源的訂用帳戶。
資源群組
新的或現有的資源群組。
如需有效的資源群組名稱,請參閱命名規則和限制 。
受控執行個體名稱
任何有效名稱。
如需有效的名稱,請參閱命名規則和限制 。
區域
要用來建立受控執行個體的區域。
如需區域的相關資訊,請參閱 Azure 區域 。
屬於執行個體集區?
如果您想要在執行個體集區 內建立此執行個體,請選取 [是] 。
驗證方法
使用 SQL 驗證
就本快速入門而言,請使用 SQL 驗證。 但也可以選擇同時使用 SQL 和 Microsoft Entra 驗證。
受控執行個體系統管理員登入
任何有效的使用者名稱。
如需有效的名稱,請參閱命名規則和限制 。 請勿使用 serveradmin
,因為這是保留的伺服器層級角色。
密碼
任何有效密碼。
密碼長度至少必須有 16 個字元,而且符合定義的複雜度需求 。
在 [受控執行個體詳細資料] 底下,選取 [計算 + 儲存體] 區段中的 [設定受控執行個體],以開啟 [計算 + 儲存體 ] 頁面。
下表提供針對範例 SQL 受控執行個體建議的計算和儲存體:
設定
建議的值
描述
服務層
一般用途
一般用途 層適用於大部分生產工作負載,並且是預設選項。 改進的下一代一般用途 服務層級也是大多數工作負載的絕佳選擇。 如需詳細資訊,請檢閱資源限制 。
硬體世代
標準系列 (Gen5)
標準系列 (Gen5) 是預設的硬體世代 ,其定義了計算和記憶體限制。 [標準系列 (Gen5)] 是預設值。
虛擬核心
指定值。
虛擬核心代表永遠會為您工作負載佈建的確切計算資源數量。 8 個虛擬核心 是預設值。
儲存空間 (GB)
指定值。
儲存體大小 (GB),根據預期的資料大小選取。
SQL Server 授權
選取適用的授權模型。
隨用隨付、搭配 Azure Hybrid Benefit 使用現有的 SQL 授權,或啟用混合式容錯移轉權限
[備份儲存體備援]
異地備援備份儲存體 。
Azure 內適用於備份儲存體的儲存體備援 。 異地備援備份儲存體是預設值且為建議選項,儘管異地區域、區域和本地備援允許更具成本彈性和單一區域資料落地。
指定 [計算 + 儲存體] 設定之後,使用 [套用 ] 儲存您的設定,然後瀏覽回 [建立 Azure SQL 受控執行個體] 頁面。 選取 [下一步] 以移至 [網路] 索引標籤
網路功能索引標籤
在 [網路] 索引標籤上填寫選用資訊。如果您省略此資訊,入口網站將會套用預設設定。
下表提供 [網路] 索引標籤上 資訊的詳細資料:
設定
建議的值
描述
虛擬網路/子網路
建立新的虛擬網路或使用現有的虛擬網路
如果網路或子網路無法使用,您必須先修改成符合網路需求 後,才能選取它作為新的受控執行個體目標。
連線類型
選擇適當的連線類型。
如需詳細資訊,請參閱接線類型 。
公用端點
選取 [停用] 。
若要讓受控執行個體可透過公用資料端點來存取,您必須啟用此選項。
允許從此存取 (如果已啟用 [公用雲端])
選取 [無存取權]
入口網站會設定具有公用端點的安全群組。 根據您的情況,選取下列其中一個選項: Azure 服務 :當您從 Power BI 或其他多租用戶服務進行連線時,建議使用此選項。 網際網路 :可在您想要快速啟動受控執行個體時用於測試目的。 不建議用於生產環境。 無存取權 :此選項會建立 [拒絕] 安全性規則。 修改這項規則,讓受控執行個體可透過公用端點來存取。 如需公用端點安全性的詳細資訊,請參閱搭配公用端點來安全地使用 Azure SQL 受控執行個體 。
選取 [檢閱 + 建立],以在建立受控執行個體前檢閱您的選擇。 或者,選取 [下一步:安全性設定] 來設定安全性設定。
[安全性] 索引標籤
就本快速入門而言,請將 [安全性 ] 索引標籤上的設定保留其預設值。
選取 [檢閱 + 建立],以在建立受控執行個體前檢閱您的選擇。 或者,設定更多自訂設定,做法是選取 [下一步:其他設定]。
其他設定
在 [其他設定] 索引標籤上填寫選用資訊。如果您省略此資訊,入口網站將會套用預設設定。
下表提供 [其他設定] 索引標籤上 資訊的詳細資料:
設定
建議的值
描述
定序
選擇您要用於受控執行個體的定序。 如果您從 SQL Server 遷移資料庫,請使用 SELECT SERVERPROPERTY(N'Collation')
來檢查來源定序並使用該值。
如需定序的相關資訊,請參閱設定或變更伺服器定序 。
時區
選取受控執行個體將要觀察的時區。
如需詳細資訊,請參閱時區 。
異地複寫
選取 否 。
僅當計劃使用受控執行個體作為次要容錯移轉群組時啟用此選項。
維護時間範圍
選擇適當的維護時段。
指定由服務維護 執行個體的排程。
選取 [檢閱 + 建立],以在建立受控執行個體前檢閱您的選擇。 或者,選取 [下一步:標記] (建議) 來設定 Azure 標記。
將標記新增至您 Azure Resource Manager 範本 (ARM 範本) 中的資源。 標記 可協助您以邏輯方式組織資源。 標記值會顯示在成本報告中,並允許依標記的其他管理活動。 請考慮至少以「擁有者」標記來標記新的 SQL 受控執行個體,識別由誰建立,以及使用「環境」標記來識別此系統是實際執行環境、開發環境等等。如需詳細資訊,請參閱開發 Azure 資源的命名和標記策略 。
選取 [檢閱 + 建立] 以繼續作業。
檢閱 + 建立
選取 [檢閱 + 建立] 索引標籤,檢閱您的選擇,然後選取 [建立] 以部署您的受控執行個體。
監視部署進度
選取 [通知] 圖示以檢視部署的狀態。
選取通知中的 [部署正在進行中] 來開啟 SQL 受控執行個體視窗,並進一步監視部署進度。
部署完成後,瀏覽至您的資源群組以檢視受控執行個體:
提示
如果您關閉了網頁瀏覽器或移出部署進度畫面,您可以透過 Azure 入口網站中受控執行個體的 [概觀] 頁面,或透過 PowerShell 或 Azure CLI 來監視佈建作業 。
使用 PowerShell 建立您的執行個體。 如需詳細資訊,請檢閱使用 PowerShell 建立 SQL 受控執行個體 。
首先,設定您的變數:
$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 受控執行個體 。
首先,設定您的變數:
# 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 受控執行個體虛擬網路和 SQL 受控執行個體虛擬網路內的流量。 若要變更或新增路由,請在路由表設定中開啟 [路由]。
選取 [網路安全性群組] 物件,以檢閱輸入和輸出安全性規則。 若要變更或新增規則,請開啟網路安全性群組設定中的 [輸入安全性規則] 和 [輸出安全性規則]。
重要
如果您已經為 SQL 受控執行個體 [啟用公用端點] ,則開啟連接埠,以允許從公用網際網路連線到 SQL 受控執行個體的網路流量。
建立資料庫
您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來建立新資料庫。
若要在 Azure 入口網站中為您的執行個體建立新資料庫,請遵循下列步驟:
在 Azure 入口網站中移至您的 [SQL 受控執行個體] 。
在 SQL 受控執行個體的 [概觀] 頁面上,選取 [+ 新增資料庫] 以開啟 [建立 Azure SQL 受控資料庫] 頁面。
在 [基本] 索引 標籤上提供資料庫的名稱。
在 [ 資料源] 索引標籤上,針對空白資料庫選取 [無 ],或從備份還原資料庫。
在其餘索引標籤上設定其餘設定,然後選取 [檢閱 + 建立 ] 以驗證您的選擇。
使用 [建立] 來部署資料庫。
使用 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 受控執行個體的連線詳細資料
若要連線到 SQL 受控執行個體,請遵循下列步驟來擷取主機名稱和完整網域名稱 (FQDN):
返回資源群組,然後選取已建立的 SQL 受控執行個體物件。
在 [概觀] 索引標籤上,找出 [主機] 屬性。 按一下 [複製到剪貼簿] 按鈕,將主機名稱複製到受控執行個體的剪貼簿,以便在下一個快速入門中使用。
所複製的值代表可用於連線至 SQL 受控執行個體的完整網域名稱 (FQDN)。 其類似於下列位址範例:your_host_name.a1b2c3d4e5f6.database.windows.net 。
相關內容
檢閱下列相關內容:
若要將現有 SQL Server 資料庫從內部部署環境還原至 SQL 受控執行個體:
下一步
將應用程式連線到 SQL 受控執行個體 。