Создание управляемого экземпляра с помощью PowerShell
Область применения: Управляемый экземпляр SQL Azure
Этот пример скрипта PowerShell создает управляемый экземпляр в выделенной подсети в новой виртуальной сети. Он также настраивает таблицу маршрутов и группу безопасности сети для виртуальной сети. После успешного выполнения скрипта доступ к управляемому экземпляру можно получить из виртуальной сети или из локальной среды. См. статью о настройке виртуальной машины Azure для подключения к управляемому экземпляру Базы данных SQL Azure, а также статью о настройке подключения "точка — сеть" к управляемому экземпляру Базы данных SQL Azure из локальной среды.
Важно!
Сведения об ограничениях см. в разделах Поддерживаемые регионы и Поддерживаемые типы подписок.
Использование Azure Cloud Shell
В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.
Начало работы с Azure Cloud Shell
Параметр | Пример и ссылка |
---|---|
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически. | ![]() |
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. | ![]() |
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. | ![]() |
Чтобы выполнить код из этой статьи в Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
В блоке кода нажмите кнопку Копировать, чтобы скопировать код.
Вставьте код в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.
Нажмите клавишу ВВОД, чтобы выполнить код.
Чтобы установить и использовать PowerShell локально, вам понадобится Azure PowerShell 1.4.0 или последующей версии для работы с этим руководством. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. Если модуль PowerShell запущен локально, необходимо также выполнить командлет Connect-AzAccount
, чтобы создать подключение к Azure.
Пример скрипта
$NSnetworkModels = "Microsoft.Azure.Commands.Network.Models"
$NScollections = "System.Collections.Generic"
Connect-AzAccount
# The SubscriptionId in which to create these objects
$SubscriptionId = ''
# 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 = "myMISubnet-$(Get-Random)"
$miSubnetAddressPrefix = "10.0.0.0/24"
#Set the managed instance name for the new managed instance
$instanceName = "myMIName-$(Get-Random)"
# Set the admin login and password for your managed instance
$miAdminSqlLogin = "SqlAdmin"
$miAdminSqlPassword = "ChangeYourAdminPassword1"
# 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
# Set subscription context
Set-AzContext -SubscriptionId $SubscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location -Tag @{Owner="SQLDB-Samples"}
# Configure virtual network, subnets, network security group, and routing table
$networkSecurityGroupMiManagementService = New-AzNetworkSecurityGroup `
-Name 'myNetworkSecurityGroupMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$routeTableMiManagementService = New-AzRouteTable `
-Name 'myRouteTableMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Location $location `
-Name $vNetName `
-AddressPrefix $vNetAddressPrefix
Add-AzVirtualNetworkSubnetConfig `
-Name $miSubnetName `
-VirtualNetwork $virtualNetwork `
-AddressPrefix $miSubnetAddressPrefix `
-NetworkSecurityGroup $networkSecurityGroupMiManagementService `
-RouteTable $routeTableMiManagementService |
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)
$delegation = New-AzDelegation -Name $delegationName -ServiceName "Microsoft.Sql/managedInstances"
$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 = '*'
}
Get-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroupName `
-Name "myNetworkSecurityGroupMiManagementService" |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1000 `
-Name "allow_tds_inbound" `
-DestinationPortRange 1433 |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1100 `
-Name "allow_redirect_inbound" `
-DestinationPortRange 11000-11999 |
Add-AzNetworkSecurityRuleConfig `
@denyInParameters `
-Priority 4096 `
-Name "deny_all_inbound" |
Add-AzNetworkSecurityRuleConfig `
@denyOutParameters `
-Priority 4096 `
-Name "deny_all_outbound" |
Set-AzNetworkSecurityGroup
# Create credentials
$secpassword = ConvertTo-SecureString $miAdminSqlPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($miAdminSqlLogin, $secpassword)
# Create managed instance
New-AzSqlInstance -Name $instanceName `
-ResourceGroupName $resourceGroupName -Location $location -SubnetId $miSubnetConfigId `
-AdministratorCredential $credential `
-StorageSizeInGB $maxStorage -VCore $vCores -Edition $edition `
-ComputeGeneration $computeGeneration -LicenseType $license
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
Очистка развертывания
Используйте приведенную ниже команду, чтобы удалить группу ресурсов и все связанные с ней ресурсы.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Описание скрипта
Этот скрипт использует часть из следующих команд. Чтобы получить дополнительные сведения об используемых и других командах, включенных в таблицу ниже, используйте ссылки на документацию по конкретным командам.
Get-Help | Примечания |
---|---|
New-AzResourceGroup | Создает группу ресурсов, в которой хранятся все ресурсы. |
New-AzVirtualNetwork | Создает виртуальную сеть. |
Add-AzVirtualNetworkSubnetConfig | Добавляет конфигурацию подсети в виртуальную сеть. |
Get-AzVirtualNetwork | Получает виртуальную сеть в группе ресурсов. |
Set-AzVirtualNetwork | Задает состояние цели для виртуальной сети. |
Get-AzVirtualNetworkSubnetConfig | Получает подсеть в виртуальной сети. |
Set-AzVirtualNetworkSubnetConfig | Настраивает состояние цели для конфигурации подсети в виртуальной сети. |
New-AzRouteTable | Создает таблицу маршрутизации. |
Get-AzRouteTable | Получает таблицы маршрутов. |
Set-AzRouteTable | Задает состояние цели для таблицы маршрутов. |
New-AzSqlInstance | Создает управляемый экземпляр |
Remove-AzResourceGroup | Удаляет группу ресурсов со всеми вложенными ресурсами. |
Дальнейшие действия
Дополнительные сведения об Azure PowerShell см. в документации по Azure PowerShell.
Дополнительные примеры скриптов PowerShell для управляемого экземпляра Базы данных SQL Azure можно найти здесь.