Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Applies to:SQL Server em Azure VM
Este guia aborda as opções para usar o PowerShell para criar um SQL Server em Azure VM (Máquina Virtual). Para obter um exemplo simplificado de Azure PowerShell que depende de valores padrão, consulte o início rápido do PowerShell para SQL Server em Máquina Virtual do Azure ou, para um script completo, consulte Criar SQL Server VM com script do PowerShell.
Pré-requisitos
Para executar este guia, você deve ter o seguinte:
- Uma assinatura Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- A versão mais recente do Azure PowerShell
Observação
Este artigo usa o módulo Azure Az PowerShell, que é o módulo recomendado do PowerShell para interagir com Azure. Para começar a usar o módulo do Az PowerShell, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, consulte Migrate Azure PowerShell do AzureRM para o Az.
Definir variáveis
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.
Comece definindo os parâmetros a serem usados em todo o script, como o local, o nome do grupo de recursos, a SQL Server imagem e a conta de armazenamento que você deseja usar, bem como as propriedades de rede e máquina virtual.
Local e grupo de recursos
Defina a região de dados, o grupo de recursos e a assinatura em que você deseja criar sua VM SQL Server e os recursos associados.
Modifique conforme desejado e, em seguida, execute estes cmdlets para iniciar essas variáveis.
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
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 usar SSDs Premium para cargas de trabalho de produção.
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
Observação
O nome da conta de armazenamento deve ter entre 3 e 24 caracteres de comprimento e usar apenas números e letras minúsculas.
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
- Etiqueta 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"
Escolher uma imagem SQL Server
É possível implantar uma imagem mais antiga de SQL Server que não está disponível no portal do Azure usando o PowerShell.
Use as variáveis a seguir para definir a imagem SQL Server a ser usada para a máquina virtual.
Liste todas as ofertas de imagem SQL Server com o comando Get-AzVMImageOffer para listar as imagens disponíveis atuais no portal Azure, bem como imagens mais antigas que você só pode implantar com o PowerShell:
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'Observação
O SQL Server 2012 e o SQL Server 2014 estão sem suporte e não estão mais disponíveis no Azure Marketplace.
Liste as edições disponíveis para a sua oferta no Get-AzVMImageSku.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Para este tutorial, use o SQL Server 2022 Developer Edition (SQLDEV-GEN2) em Windows Server 2022. A Developer Edition é licenciada gratuitamente para fins de teste e desenvolvimento; você só paga o custo de execução da VM:
$OfferName = "SQL2022-WS2022"
$PublisherName = "MicrosoftSQLServer"
$Version = "latest"
$Sku = "SQLDEV-GEN2"
$License = 'PAYG'
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Criar um grupo de recursos
Abra o PowerShell e estabeleça o acesso à sua conta Azure executando o comando Connect-AzAccount e defina o contexto da assinatura com Set-AzContext. Insira suas credenciais quando solicitado. Use o mesmo email e senha que você usa para entrar no portal do Azure.
Após estabelecer o contexto da assinatura, o primeiro objeto que você vai criar é o grupo de recursos. Use o comando Connect-AzAccount para se conectar ao Azure e definir o contexto da assinatura com Set-AzContext. Use o cmdlet New-AzResourceGroup para criar um grupo de recursos Azure e seus recursos. Especifique as variáveis que você inicializou anteriormente para o nome e a localização do grupo de recursos.
Execute este cmdlet para se conectar ao Azure, estabelecer o contexto da assinatura e criar seu novo grupo de recursos:
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $Location
Tag = @{Owner="SQLDocs-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
Criar uma conta de armazenamento
A máquina virtual requer recursos de armazenamento para o disco do sistema operacional e para os arquivos de log e dados SQL Server. Para simplificar, você criará um único disco para ambos. Você pode anexar discos adicionais posteriormente usando o cmdlet New-AzDisk para colocar seus dados SQL Server e arquivos 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 que você iniciou anteriormente para o nome da conta de armazenamento, nome do SKU de armazenamento e localização.
Execute esse cmdlet para criar sua nova conta de armazenamento:
# Create storage account
$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 endereço IP público ou 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 que você inicializou anteriormente para o nome da 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.
# Create a subnet configuration
$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 que você inicializou anteriormente para o nome, a localização e o prefixo de endereço. Use a configuração de sub-rede definida na etapa anterior.
Execute esse cmdlet para criar sua rede virtual:
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Criar um endereço IP público
Agora que sua rede virtual está definida, você precisa configurar um endereço IP para se conectar à 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 que você inicializou anteriormente para nome, local, método de alocação e rótulo 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.
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Crie o grupo de segurança de rede
Para proteger a VM e SQL Server tráfego, crie um grupo de segurança de rede.
Crie duas regras de grupo de segurança de rede usando New-AzNetworkSecurityRuleConfig, uma regra para a área de trabalho remota (RDP), para permitir conexões RDP, e uma regra que permita tráfego na porta TCP 1433. Isso viabiliza as conexões ao SQL Server pela Internet.
# Create a network security group rule $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 AllowCrie o grupo de segurança de rede usando New-AzNetworkSecurityGroup.
# Create a network security group $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. Utilize o cmdlet New-AzNetworkInterface para criar a interface de rede no seu 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.
# Create a network interface
$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 a VM SQL Server
Para criar sua VM SQL Server, primeiro crie um objeto de credencial e, em seguida, crie a VM.
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.
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Definir propriedades e criar a VM
Agora você está pronto para definir as propriedades do sistema operacional da máquina virtual com New-AzVMConfig, criar a VM com New-AzVM e usar o cmdlet Add-AzVMNetworkInterface para adicionar a interface de rede usando a variável que você definiu anteriormente.
A amostra de script faz o seguinte:
- Exija que o agente de máquina virtual seja instalado.
- Especifica que o cmdlet habilita a atualização automática.
- Especifica as variáveis que você inicializou 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.
# Create a virtual machine configuration
$VMName = $ResourceGroupName + "VM"
$VMConfig = New-AzVMConfig -VMName $VMName -VMSize $VMSize |
Set-AzVMOperatingSystem -Windows -ComputerName $VMName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate |
Set-AzVMSourceImage -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version |
Add-AzVMNetworkInterface -Id $Interface.Id
# Create the VM
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VMConfig
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
Máquinas virtuais do SQL Server dão suporte a funcionalidades de gerenciamento automatizado com a Extensão do Agente SQL Server IaaS. Para registrar sua SQL Server com a extensão, execute o comando New-AzSqlVM após a criação da máquina virtual. Especifique o tipo de licença para sua VM SQL Server, escolhendo entre pagamento conforme o uso (PAYG), o Azure Hybrid Benefit (AHUB) ou a recuperação de desastre (DR) para ativar a licença de réplica de DR free. Para obter mais informações sobre licenciamento, confira Modelo de licenciamento.
Para registrar sua VM SQL Server com a extensão do Agente IaaS do SQL, primeiro registre sua assinatura no provedor de recursos usando Register-AzResourceProvider e registre sua VM SQL Server com a extensão do Agente IaaS do SQL usando New-AzSqlVM:
# Register the SQL IaaS Agent extension to your subscription
Register-AzResourceProvider -ProviderNamespace Microsoft.SqlVirtualMachine
# Register SQL Server VM with the extension
New-AzSqlVM -Name $VMName -ResourceGroupName $ResourceGroupName -Location $Location `
-LicenseType $License
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 completo
Para obter um script completo do PowerShell que fornece uma experiência de ponta a ponta, consulte Deploy SQL Server em Azure VM com o PowerShell.
Conteúdo relacionado
Depois que a máquina virtual for criada, você pode:
- Conectar-se à máquina virtual usando o Bastion
- Configure as configurações do SQL Server no portal para sua VM, incluindo:
- Configurar a conectividade
- Conectar clientes e aplicativos à nova instância de SQL Server