Usar o PowerShell para criar uma instância gerenciada
Aplica-se a:Instância Gerenciada SQL do Azure
Este exemplo de script do PowerShell cria uma instância gerenciada em uma sub-rede dedicada dentro de uma nova rede virtual. Ele também configura uma tabela de rotas e um grupo de segurança de rede para a rede virtual. Depois que o script for executado com êxito, a instância gerenciada poderá ser acessada de dentro da rede virtual ou de um ambiente local. Consulte Configurar a VM do Azure para se conectar à Instância Gerenciada do Banco de Dados SQL do Azure e Configurar uma conexão ponto a site com a Instância Gerenciada SQL do Azure local.
Utilizar o Azure Cloud Shell
O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Ligação |
---|---|
Selecione Experimentar no canto superior direito de um bloco de código. A seleção de Experimente não copia automaticamente o código para o Cloud Shell. | |
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. | |
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. |
Para executar o código neste artigo no Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar num bloco de código para copiar o código.
Cole o código na sessão do Cloud Shell selecionando Ctrl+Shift V no Windows e Linux ou selecionando Cmd+Shift++V no macOS.
Selecione Introduzir para executar o código.
Se você optar por instalar e usar o PowerShell localmente, este tutorial exigirá o Azure PowerShell 1.4.0 ou posterior. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se estiver a executar localmente o PowerShell, também terá de executar o Connect-AzAccount
para criar uma ligação com o Azure.
Script de exemplo
$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
Limpar a implementação
Use o comando a seguir para remover o grupo de recursos e todos os recursos associados a ele.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Explicação do script
Este script usa alguns dos seguintes comandos. Para obter mais informações sobre comandos usados e outros na tabela abaixo, clique nos links para documentação específica do comando.
Command | Notas |
---|---|
New-AzResourceGroup | Cria um grupo de recursos no qual todos os recursos são armazenados. |
Novo-AzVirtualNetwork | Cria uma rede virtual. |
Add-AzVirtualNetworkSubnetConfig | Adiciona uma configuração de sub-rede a uma rede virtual. |
Get-AzVirtualNetwork | Obtém uma rede virtual num grupo de recursos. |
Set-AzVirtualNetwork | Define o estado de meta para uma rede virtual. |
Get-AzVirtualNetworkSubnetConfig | Obtém uma sub-rede em uma rede virtual. |
Set-AzVirtualNetworkSubnetConfig | Configura o estado de meta para uma configuração de sub-rede em uma rede virtual. |
New-AzRouteTable | Cria uma tabela de rotas. |
Get-AzRouteTable | Obtém tabelas de rotas. |
Set-AzRouteTable | Define o estado de meta para uma tabela de rotas. |
New-AzSqlInstance | Cria uma instância gerenciada. |
Remove-AzResourceGroup | Elimina um grupo de recursos, incluindo todos os recursos aninhados. |
Próximos passos
Para obter mais informações sobre o Azure PowerShell, consulte a documentação do Azure PowerShell.
Exemplos de script adicionais do PowerShell para a Instância Gerenciada SQL do Azure podem ser encontrados em scripts PowerShell da Instância Gerenciada SQL do Azure.