Usar o Azure PowerShell para criar um SQL Server na VM do Azure
Aplica-se a:SQL Server na VM do Azure
Este guia aborda as opções de uso do PowerShell para provisionar um SQL Server em VM (máquina virtual) do Azure. Para obter um exemplo do Azure PowerShell simplificado que depende de valores padrão, confira o Início rápido do SQL Server no Azure VM PowerShell.
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Observação
Este artigo usa o módulo do PowerShell Azure Az, que é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Configurar sua assinatura
Abra o PowerShell e estabeleça o acesso à sua conta do Azure executando o comando Connect-AzAccount.
Connect-AzAccount
Insira suas credenciais quando solicitado. Use o mesmo email e senha usados para entrar no Portal do Azure.
Definir variáveis de imagem
Para reutilizar valores e simplificar a criação do script, comece definindo um número de variáveis. Altere os valores de parâmetro como desejar, mas lembre-se das restrições de nomenclatura relacionadas a tamanhos de nome e a caracteres especiais ao modificar os valores fornecidos.
Local e grupo de recursos
Defina a região de dados e o grupo de recursos em que você deseja criar os outros recursos de VM.
Modifique conforme desejado e, em seguida, execute estes cmdlets para iniciar essas variáveis.
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"
Propriedades de armazenamento
Defina a conta de armazenamento e o tipo de armazenamento a usar na máquina virtual.
Modifique conforme desejado e, então, execute o cmdlet a seguir para iniciar essas variáveis. É recomendável utilizar os SSDs Premium para cargas de trabalho de produção.
$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"
Propriedades de rede
Defina as propriedades a usadas pela rede na máquina virtual.
- interface de rede
- Método de alocação de TCP/IP
- Nome da rede virtual
- Nome da sub-rede virtual
- Intervalo de endereços IP para a rede virtual
- Intervalo de endereços IP para a sub-rede
- Rótulo do nome de domínio público
Modifique conforme desejado e, em seguida, execute este cmdlet para iniciar essas variáveis.
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName
Propriedades de máquina virtual
Defina as propriedades a seguir:
- Nome da máquina virtual
- Nome do computador
- Tamanho da máquina virtual
- Nome do disco do sistema operacional para a máquina virtual
Modifique conforme desejado e, em seguida, execute este cmdlet para iniciar essas variáveis.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Escolha uma imagem do SQL Server
Use as seguintes variáveis para definir a imagem do SQL Server a ser usada para a máquina virtual.
Primeiro, liste todas as ofertas de imagem do SQL Server com o comando
Get-AzVMImageOffer
. Esse comando lista as imagens atuais que estão disponíveis no portal do Azure e as imagens mais antigas que só podem ser instaladas com o PowerShell:Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
Observação
O SQL Server 2008 e o SQL Server 2008 R2 estão fora do suporte estendido e não estão mais disponíveis no Azure Marketplace.
Para este tutorial, uso as seguintes variáveis para especificar o SQL Server 2022 no Windows Server 2022.
$OfferName = "SQL2022-WS2022" $PublisherName = "MicrosoftSQLServer" $Version = "latest"
Em seguida, liste as edições disponíveis para a sua oferta.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Para este tutorial, use o edição do Desenvolvedor do SQL Server 2022 (SQLDEV). A edição Developer é licenciada livremente para teste e desenvolvimento, e você só paga o custo da execução da VM.
$Sku = "SQLDEV"
Criar um grupo de recursos
Com o modelo de implantação do Gerenciador de Recursos, o primeiro objeto criado por você é o grupo de recursos. Use o cmdlet New-AzResourceGroup para criar um grupo de recursos do Azure e seus recursos. Especifique as variáveis iniciadas anteriormente para o nome e o local do grupo de recursos.
Execute este cmdlet para criar um novo grupo de recursos.
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
Criar uma conta de armazenamento
A máquina virtual exige recursos de armazenamento para o disco do sistema operacional para os arquivos de log de dados do SQL Server. Para simplificar, você criará um único disco para ambos. É possível anexar discos adicionais posteriormente usando o cmdlet Add-Azure Disk para colocar seus dados do SQL Server e os arquivo de log em discos dedicados. Use o cmdlet New-AzStorageAccount para criar uma conta de Armazenamento Standard em seu novo grupo de recursos. Especifique as variáveis iniciadas anteriormente para o nome de conta de armazenamento, nome do SKU de armazenamento e local.
Execute este cmdlet para criar sua nova conta de armazenamento.
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
Dica
Criar uma conta de armazenamento pode demorar alguns minutos.
Criar recursos da rede
A máquina virtual requer um número de recursos de rede para conectividade de rede.
- Cada máquina virtual exige um rede virtual.
- Uma rede virtual deve ter pelo menos uma sub-rede definida.
- Uma interface de rede deve ser definida com um público ou um endereço IP privado.
Criar uma configuração de sub-rede da rede virtual
Comece criando uma configuração de sub-rede para a sua rede virtual. Para este tutorial, crie uma sub-rede padrão usando o cmdlet New-AzVirtualNetworkSubnetConfig. Especifique as variáveis iniciadas anteriormente para o nome de sub-rede e o prefixo de endereço.
Observação
Você pode definir propriedades adicionais da configuração de sub-rede da rede virtual usando esse cmdlet, mas isso está além do escopo deste tutorial.
Execute este cmdlet para criar a configuração de sub-rede virtual.
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
Criar uma rede virtual
Em seguida, crie sua rede virtual no grupo de recursos usando o cmdlet New-AzVirtualNetwork. Especifique as variáveis iniciadas anteriormente para nome, local e prefixo de endereço. Use a configuração de sub-rede definida na etapa anterior.
Execute este cmdlet para criar sua rede virtual.
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Criar um endereço IP público
Agora que a sua rede virtual está definida, é preciso configurar um endereço IP para a conectividade com a máquina virtual. Para este tutorial, crie um endereço IP público usando o endereçamento IP dinâmico para dar suporte à conectividade de Internet. Use o cmdlet New-AzPublicIpAddress para criar o endereço IP público em seu novo grupo de recursos. Especifique as variáveis iniciadas anteriormente para nome, local, método de alocação e rótulo do nome de domínio DNS.
Observação
Você pode definir propriedades adicionais do endereço IP público usando esse cmdlet, mas isso está além do escopo deste tutorial. Você também pode criar um endereço particular ou um endereço com um endereço estático, mas isso também está além do escopo deste tutorial.
Execute este cmdlet para criar seu endereço IP público.
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Crie o grupo de segurança de rede
Para proteger o tráfego do SQL Server e da VM, cria um grupo de segurança de rede.
Primeiro, crie uma regra de grupo de segurança de rede para a área de trabalho remota (RDP) para permitir conexões RDP.
$NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp ` -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
Configure uma regra de grupo de segurança de rede que permita tráfego na porta TCP 1433. Fazer isso habilita as conexões ao SQL Server pela Internet.
$NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule" -Protocol Tcp ` -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
Crie o grupo de segurança de rede.
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName ` -Location $Location -Name $NsgName ` -SecurityRules $NsgRuleRDP,$NsgRuleSQL
Criar a interface de rede
Agora você está pronto para criar a interface de rede para sua máquina virtual. Use o cmdlet New-AzNetworkInterface para criar o adaptador de rede no novo grupo de recursos. Especifique o nome, o local, a sub-rede e o endereço IP público definidos anteriormente.
Execute este cmdlet para criar a interface de rede.
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
Configurar um objeto da VM
Agora que os recursos de rede e de armazenamento estão definidos, está tudo pronto para definir os recursos de computação para a máquina virtual.
- Especifique o tamanho da máquina virtual e as várias propriedades do sistema operacional.
- Especifique a interface de rede criada anteriormente.
- Defina o armazenamento de blob.
- Especifique o disco do sistema operacional.
Criar o objeto da VM
Começamos especificando o tamanho da máquina virtual. Para este tutorial, especifique uma DS13. Use o cmdlet New-AzVMConfig para criar um objeto de máquina virtual configurável. Especifique as variáveis iniciadas anteriormente para nome e tamanho.
Execute este cmdlet para criar o objeto da máquina virtual.
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
Criar um objeto de credencial para armazenar o nome e a senha para as credenciais de administrador local
Antes de definir as propriedades de sistema operacional da máquina virtual, é preciso fornecer as credenciais da conta de administrador local como uma cadeia de caracteres segura. Para fazer isso, usamos o cmdlet Get-Credential.
Execute o cmdlet a seguir. Você precisará digitar o nome do administrador local e a senha da VM na janela de solicitação de credenciais do PowerShell.
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
Definir as propriedades de sistema operacional da máquina virtual
Agora, está tudo pronto para definir as propriedades do sistema operacional da máquina virtual com o cmdlet Set-AzVMOperatingSystem.
- Defina o tipo de sistema operacional como Windows.
- Exija que o agente de máquina virtual seja instalado.
- Especifique que o cmdlet habilite a atualização automática.
- Especifique as variáveis iniciadas anteriormente para o nome da máquina virtual, o nome do computador e a credencial.
Execute este cmdlet para definir as propriedades do sistema operacional de sua máquina virtual.
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine `
-Windows -ComputerName $ComputerName -Credential $Credential `
-ProvisionVMAgent -EnableAutoUpdate
Adicionar a interface de rede à máquina virtual
Em seguida, use o cmdlet Add-AzVMNetworkInterface para adicionar o adaptador de rede usando a variável definida anteriormente.
Execute este cmdlet para definir a interface de rede de sua máquina virtual.
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
Definir o local de armazenamento de blobs para o disco a ser usado pela máquina virtual
Em seguida, defina o local de armazenamento de blobs para o disco da VM usando as variáveis definidas anteriormente.
Execute este cmdlet para definir o local de armazenamento de blobs.
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
Definir as propriedades de disco do sistema operacional para a máquina virtual
Em seguida, defina as propriedades de disco do sistema operacional da máquina virtual usando o cmdlet Set-AzVMOSDisk.
- Especifique que o sistema operacional da máquina virtual virá de uma imagem.
- Defina o cache para somente leitura (pois o SQL Server está sendo instalado no mesmo disco).
- Especifique as variáveis iniciadas anteriormente para o nome da VM e o disco do sistema operacional.
Execute este cmdlet para definir as propriedades de disco do sistema operacional da sua máquina virtual.
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name `
$OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage
Especificar a imagem da plataforma para a máquina virtual
A última etapa da configuração é especificar a imagem da plataforma da sua máquina virtual. Neste tutorial, use a imagem mais recente do SQL Server 2016 CTP. Use o cmdlet Set-AzVMSourceImage para usar essa imagem com as variáveis definidas anteriormente.
Execute este cmdlet para especificar a imagem da plataforma da sua máquina virtual.
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine `
-PublisherName $PublisherName -Offer $OfferName `
-Skus $Sku -Version $Version
Criar a VM de SQL
Agora que você concluiu as etapas de configuração, está tudo pronto para criar a máquina virtual. Use o cmdlet New-AzVM para criar a máquina virtual usando as variáveis definidas.
Dica
A criação da VM pode levar alguns minutos.
Execute este cmdlet para criar a sua máquina virtual.
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine
A máquina virtual é criada.
Observação
Se você receber um erro sobre o diagnóstico de inicialização, ignore-o. Uma conta de armazenamento padrão é criada para o diagnóstico de inicialização, pois a conta de armazenamento especificada para o disco da máquina virtual é uma conta de armazenamento premium.
Instalar a extensão SQL IaaS Agent
As máquinas virtuais do SQL Server suportam funcionalidades de gerenciamento automático com a Extensão SQL Server IaaS Agent. Para registrar seu SQL Server com a extensão, execute o comando New-AzSqlVM depois que a máquina virtual for criada. Especifique o tipo de licença para a sua VM do SQL Server escolhendo entre pagamento conforme o uso ou traga sua própria licença por meio do Benefício Híbrido do Azure. Para obter mais informações sobre licenciamento, confira Modelo de licenciamento.
New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB>
Há três maneiras de registrar com a extensão:
- Automaticamente para todas as VMs atuais e futuras em uma assinatura
- Manualmente para uma única VM
- Manualmente para várias VMs em massa
Parar ou remover uma máquina virtual
Caso não precise que a VM seja executada continuamente, é possível evitar encargos desnecessários interrompendo-a quando não estiver em uso. O comando a seguir interrompe a VM, mas a deixa disponível para uso futuro.
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
Também é possível excluir permanentemente todos os recursos associados à máquina virtual com o comando Remove-AzResourceGroup. Essa ação também excluirá a máquina virtual permanentemente; portanto, use esse comando com cuidado.
Script de exemplo
O script a seguir contém o script completo do PowerShell para este tutorial. Ele pressupõe que você já configurou a assinatura do Azure para uso com os comandos Connect-AzAccount e Select-AzSubscription.
# Variables
## Global
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"
## Storage
$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"
## Network
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$TCPIPAllocationMethod = "Dynamic"
$DomainName = $ResourceGroupName
##Compute
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
##Image
$PublisherName = "MicrosoftSQLServer"
$OfferName = "SQL2017-WS2016"
$Sku = "SQLDEV"
$Version = "latest"
# Resource Group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
# Storage
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -SkuName $StorageSku -Kind "Storage" -Location $Location
# Network
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
$VNet = New-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
$NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule" -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location -Name $NsgName -SecurityRules $NsgRuleRDP,$NsgRuleSQL
$Interface = New-AzNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id -NetworkSecurityGroupId $Nsg.Id
# Compute
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate #-TimeZone = $TimeZone
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage
# Image
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version
# Create the VM in Azure
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine
# Add the SQL IaaS Agent Extension, and choose the license type
New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB>
Próximas etapas
Depois que a máquina virtual for criada, você pode:
- Conectar-se à máquina virtual usando RDP
- Definir configurações do SQL Server no portal para sua VM, incluindo:
- Configurar a conectividade
- Conectar clientes e aplicativos à nova instância do SQL Server
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de