Partilhar via


Guia para criar VM SQL Server com PowerShell

Aplica-se a: SQL Server em Azure VM

Este guia apresenta opções para usar o PowerShell para criar um SQL Server na Azure Virtual Machine (VM). Para um exemplo simplificado de Azure PowerShell que depende de valores predefinidos, consulte o guia rápido do SQL Server no Azure VM com PowerShell, ou para um script completo, veja Criação de uma VM do SQL Server com script do PowerShell.

Pré-requisitos

Para completar este guia, você deve ter o seguinte:

  • Uma subscrição do Azure. Se não tiver uma subscrição Azure, crie uma conta gratuita antes de começar.
  • A versão mais recente do Azure PowerShell

Observação

Este artigo utiliza o módulo PowerShell do Azure Az, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar com o módulo Az PowerShell, veja Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, veja Migrar Azure PowerShell do AzureRM para o Az.

Definir variáveis

Para reutilizar valores e simplificar a criação de scripts, comece definindo várias variáveis. Altere os valores de parâmetro como desejar, mas esteja ciente das restrições de nomenclatura relacionadas a comprimentos de nome e caracteres especiais ao modificar os valores fornecidos.

Comece por definir os parâmetros a usar ao longo do script, como a localização, nome do grupo de recursos, a imagem do SQL Server e a conta de armazenamento que pretende usar, bem como as propriedades da rede e da máquina virtual.

Localização e grupo de recursos

Defina a região de dados, o grupo de recursos e a subscrição onde pretende criar a sua VM do SQL Server e os recursos associados.

Modifique como desejar e execute esses cmdlets para inicializar 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 ser usado pela máquina virtual.

Modifique como desejar e execute o cmdlet a seguir para inicializar essas variáveis. Recomendamos o uso de 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 e usar apenas números e letras minúsculas.

Propriedades de rede

Defina as propriedades a serem usadas pela rede na máquina virtual.

  • Interface de Rede
  • Método de alocação TCP/IP
  • Nome da rede virtual
  • Nome da sub-rede virtual
  • Conjunto de endereços IP para a rede virtual
  • Intervalo de endereços IP para a subrede
  • Rótulo de nome de domínio público

Modifique como desejar e execute este cmdlet para inicializar 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 da máquina virtual

Defina as seguintes propriedades:

  • 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 como desejar e execute este cmdlet para inicializar essas variáveis.

$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

Escolha uma imagem do SQL Server

É possível implementar uma imagem mais antiga do SQL Server que não está disponível no portal do Azure usando o PowerShell.

Use as seguintes variáveis para definir a imagem do SQL Server a usar para a máquina virtual.

  1. Liste todas as ofertas de imagens de SQL Server com o comando Get-AzVMImageOffer para listar as imagens disponíveis atualmente no portal Azure, bem como imagens antigas que só podes implementar com o PowerShell:

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    

    Observação

    O SQL Server 2012 e o SQL Server 2014 já não estão disponíveis no Azure Marketplace.

  2. Liste as edições disponíveis para a sua oferta com o Get-AzVMImageSku.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    

Para este tutorial, utilize a SQL Server 2022 Developer edition (SQLDEV-GEN2) no Windows Server 2022. A edição Developer é licenciada livremente para teste e desenvolvimento, e você paga apenas pelo 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

Abre o PowerShell e estabelece o acesso à tua conta de Azure executando o comando Connect-AzAccount, e define o teu contexto de subscrição com Set-AzContext. Quando solicitado, introduza as credenciais. Use o mesmo email e palavra-passe que usa para iniciar sessão no portal do Azure.

Depois de estabelecer o contexto da assinatura, o primeiro objeto criado é o grupo de recursos. Use o comando Connect-AzAccount para se ligar a Azure e defina o seu contexto de subscrição com Set-AzContext. Use o cmdlet New-AzResourceGroup para criar um grupo de recursos Azure e os seus recursos. Especifique as variáveis que você inicializou anteriormente para o nome e o local do grupo de recursos.

Execute este cmdlet para se ligar ao Azure, estabelecer o contexto de subscrição e criar o 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 operativo e para os ficheiros de dados e registo do SQL Server. Para simplificar, você criará um único disco para ambos. Podes anexar discos adicionais mais tarde usando o cmdlet New-AzDisk para colocar os teus dados SQL Server e ficheiros de registo em discos dedicados. Use o cmdlet New-AzStorageAccount para criar uma conta de armazenamento padrão em seu novo grupo de recursos. Especifique as variáveis que você inicializou anteriormente para o nome da conta de armazenamento, o nome da SKU de armazenamento e o local.

Execute este cmdlet para criar sua nova conta de armazenamento:

# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
   -Name $StorageName -SkuName $StorageSku `
   -Kind "Storage" -Location $Location

Sugestão

A criação da conta de armazenamento pode levar alguns minutos.

Criar recursos de rede

A máquina virtual requer vários recursos de rede para conectividade de rede.

  • Cada máquina virtual requer uma 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 de rede virtual

Comece criando uma configuração de sub-rede para 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 do endereço.

Observação

Você pode definir propriedades adicionais da configuração de sub-rede de rede virtual usando esse cmdlet, mas isso está além do escopo deste tutorial.

Execute este cmdlet para criar sua 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 em seu novo grupo de recursos usando o cmdlet New-AzVirtualNetwork. Especifique as variáveis que você inicializou anteriormente para o 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:

# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

Criar o endereço IP público

Agora que sua rede virtual está definida, você deve 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 oferecer suporte à conectividade com a 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 o nome, local, método de alocação e rótulo de 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 inicial. Você também pode criar um endereço privado 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

Criar o grupo de segurança de rede

Para proteger o tráfego da VM e do SQL Server, crie um grupo de segurança de rede.

  1. Crie duas regras de grupo de segurança de rede usando New-AzNetworkSecurityRuleConfig , uma regra para área de trabalho remota (RDP) para permitir conexões RDP e uma regra que permite tráfego na porta TCP 1433. Fazer isso permite ligações ao SQL Server através da 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 Allow
    
  2. Crie 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. Use o cmdlet New-AzNetworkInterface para criar a interface de rede em 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 sua 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 VM

Agora que os recursos de armazenamento e rede estão definidos, você está pronto para definir recursos de computação para a máquina virtual.

  • Especifique o tamanho da máquina virtual e várias propriedades do sistema operacional.
  • Especifique a interface de rede que você criou anteriormente.
  • Não há tradução direta disponível, pois "blob storage" refere-se a um tipo específico de armazenamento de dados em nuvem, muito utilizado em plataformas como o Microsoft Azure.
  • Especifique o disco do sistema operacional.

Criar a VM do SQL Server

Para criar a sua VM do SQL Server, crie primeiro um objeto de credencial e depois crie a VM.

Criar um objeto de credencial para manter o nome e a senha das credenciais de administrador local

Antes de definir as propriedades do sistema operacional para a máquina virtual, você deve fornecer as credenciais para a conta de administrador local como uma cadeia de caracteres segura. Para fazer isso, use o cmdlet Get-Credential.

Execute o cmdlet a seguir. Você precisará digitar o nome e a senha do administrador local 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 cmdlet Add-AzVMNetworkInterface para adicionar a interface de rede usando a variável definida anteriormente.

O script de exemplo faz o seguinte:

  • Exija que o do 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 para 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, poderá ignorá-lo. Uma conta de armazenamento padrão é criada para diagnóstico de inicialização porque a conta de armazenamento especificada para o disco da máquina virtual é uma conta de armazenamento premium.

Instalar a extensão do SQL IaaS Agent

SQL Server máquinas virtuais suportam funcionalidades de gestão automatizada com a SQL Server IaaS Agent Extension. Para registar o seu 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 a sua VM de SQL Server, escolhendo entre pay-as-you-go (PAYG), a Azure Hybrid Benefit (AHUB) ou recuperação de desastres (DR) para ativar a licença réplica DR free. Para obter mais informações sobre licenciamento, consulte modelo de licenciamento.

Para registar a sua SQL Server VM com a extensão SQL IaaS Agent, primeiro registe a sua subscrição junto do fornecedor de recursos usando Register-AzResourceProvider, e depois registe-a a sua VM SQL Server com a extensão SQL IaaS Agent 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 se registrar com a extensão:

Parar ou remover uma VM (Máquina Virtual)

Se você não precisar que a VM seja executada continuamente, poderá evitar cobranças desnecessárias 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

Você também pode excluir permanentemente todos os recursos associados à máquina virtual com o comando Remove-AzResourceGroup. Isso exclui permanentemente a máquina virtual também, portanto, use este comando com cuidado.

Script completo

Para um script PowerShell completo que oferece uma experiência de ponta a ponta, veja Deploy SQL Server numa VM Azure com PowerShell.

Depois que a máquina virtual for criada, você poderá: