Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applies to:SQL Server su macchina virtuale di Azure
Questa guida illustra le opzioni per l'uso di PowerShell per creare un SQL Server in Azure macchina virtuale.This guide covers options for using PowerShell to create a SQL Server on Azure Virtual Machine (VM). Per un esempio semplificato di Azure PowerShell basato sui valori predefiniti, consulta il SQL Server su VM di Azure PowerShell quickstart oppure, per uno script completo, consulta Crea SQL Server VM con script PowerShell.
Prerequisiti
Per completare questa guida, è necessario disporre degli elementi seguenti:
- Sottoscrizione Azure. Se non si ha una sottoscrizione Azure, creare un account free prima di iniziare.
- Versione più recente di Azure PowerShell
Nota
Questo articolo usa il modulo Az PowerShell Azure, che è il modulo PowerShell consigliato per interagire con Azure. Per iniziare a usare il modulo Az PowerShell, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo Az PowerShell, vedere Migrate Azure PowerShell da AzureRM ad Az.
Definire le variabili
Per riutilizzare i valori e semplificare la creazione degli script, iniziare definendo una serie di variabili. Cambiare i valori dei parametri in base alla necessità, ma quando si modificano i valori forniti occorre prestare attenzione alle restrizioni di denominazione correlate alle lunghezze dei nomi e ai caratteri speciali.
Per iniziare, definire i parametri da usare in tutto lo script, ad esempio il percorso, il nome del gruppo di risorse, l'immagine SQL Server e l'account di archiviazione da usare, nonché le proprietà della rete e della macchina virtuale.
Posizione e gruppo di risorse
Definire l'area dati, il gruppo di risorse e la sottoscrizione in cui si vuole creare la macchina virtuale SQL Server e le risorse associate.
Modificare come desiderato e quindi eseguire questi cmdlet per inizializzare le variabili.
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
Proprietà della risorsa di archiviazione
Definire l'account di archiviazione e il tipo di archiviazione da utilizzare per la macchina virtuale.
Modificare come desiderato e quindi eseguire il comando cmdlet seguente per inizializzare le variabili. È consigliabile usare unità SSD Premium per i carichi di lavoro di produzione.
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
Nota
Il nome dell'account di archiviazione deve avere una lunghezza compresa tra 3 e 24 caratteri e usare solo numeri e lettere minuscole.
Proprietà della rete
Definire le proprietà da usare per la rete nella macchina virtuale.
- Interfaccia di rete
- Metodo di allocazione TCP/IP
- Nome della rete virtuale
- Nome della subnet virtuale
- Intervallo di indirizzi IP per la rete virtuale
- Intervallo di indirizzi IP per la subnet
- Etichetta di nome di dominio pubblico
Modificare come desiderato e quindi eseguire questo cmdlet per inizializzare le variabili.
$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
Proprietà della macchina virtuale
Definire le proprietà seguenti:
- Nome della macchina virtuale
- Nome del computer
- Virtual machine size (Dimensioni della macchina virtuale)
- Nome del disco del sistema operativo per la macchina virtuale
Modificare come desiderato e quindi eseguire questo cmdlet per inizializzare le variabili.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Scegliere un'immagine SQL Server
È possibile distribuire un'immagine precedente di SQL Server non disponibile nel portale di Azure usando PowerShell.
Usare le variabili seguenti per definire l'immagine SQL Server da usare per la macchina virtuale.
Elencare tutte le offerte di immagini SQL Server con il comando Get-AzVMImageOffer per elencare le immagini disponibili correnti nel portale di Azure e le immagini meno recenti che è possibile distribuire solo con PowerShell:
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'Nota
SQL Server 2012 e SQL Server 2014 sono fuori dal supporto Mainstream e non sono più disponibili dal Azure Marketplace.
Elenca le edizioni disponibili per l'offerta con Get-AzVMImageSku.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Per questa esercitazione, usare SQL Server 2022 Developer Edition (SQLDEV-GEN2) in Windows Server 2022. L'edizione Developer è concessa liberamente in licenza per il test e lo sviluppo e si paga solo per il costo di esecuzione della macchina virtuale:
$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)
Creare un gruppo di risorse
Aprire PowerShell e stabilire l'accesso all'account Azure eseguendo il comando Connect-AzAccount e impostare il contesto della sottoscrizione con Set-AzContext. Quando viene richiesto, immetti le credenziali. Usare la stessa password e posta elettronica usata per accedere al portale di Azure.
Dopo aver stabilito il contesto della sottoscrizione, il primo oggetto creato è il gruppo di risorse. Usare il comando Connect-AzAccount per connettersi a Azure e impostare il contesto della sottoscrizione con Set-AzContext. Usare il cmdlet New-AzResourceGroup per creare un gruppo di risorse Azure e le relative risorse. Specificare le variabili inizializzate in precedenza per nome e posizione del gruppo di risorse.
Eseguire questo cmdlet per connettersi a Azure, stabilire il contesto della sottoscrizione e creare il nuovo gruppo di risorse:
# 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
Creare un account di archiviazione
La macchina virtuale richiede risorse di archiviazione per il disco del sistema operativo e per i file di dati e di log SQL Server. Per semplificare, verrà creato un singolo disco per entrambi. È possibile collegare dischi aggiuntivi in un secondo momento usando il cmdlet New-AzDisk per inserire i file di dati e di log SQL Server nei dischi dedicati. Usare il cmdlet New-AzStorageAccount per creare un account di archiviazione standard nel nuovo gruppo di risorse. Specificare le variabili inizializzate in precedenza per nome dell'account di archiviazione, nome dello SKU di archiviazione e posizione.
Eseguire questo cmdlet per creare il nuovo account di archiviazione:
# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
Suggerimento
La creazione dell'account di archiviazione può richiedere alcuni minuti.
Creare risorse di rete
La macchina virtuale richiede alcune risorse di rete per la connettività di rete.
- Ogni macchina virtuale richiede una rete virtuale.
- In una rete virtuale deve essere definita almeno una subnet.
- È necessario che sia definita un'interfaccia di rete con un indirizzo IP pubblico o privato.
Creare una configurazione di subnet di rete virtuale
Per prima cosa, creare una configurazione di subnet per la rete virtuale. Per questa esercitazione, creare una subnet predefinita mediante il cmdlet New-AzVirtualNetworkSubnetConfig. Specificare le variabili che hai precedentemente inizializzato per il nome della subnet e il prefisso dell'indirizzo.
Nota
È possibile definire altre proprietà della configurazione della subnet della rete virtuale usando questo cmdlet, ma questa operazione non rientra nell'ambito dell'esercitazione.
Eseguire questo cmdlet per creare la configurazione di subnet virtuale.
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
Creare una rete virtuale
Creare quindi la rete virtuale nel nuovo gruppo di risorse mediante il cmdlet New-AzVirtualNetwork. Specificare le variabili inizializzate in precedenza per nome, posizione e prefisso dell'indirizzo. Usare la configurazione di subnet definita nel passaggio precedente.
Eseguire questo cmdlet per creare la rete virtuale:
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Creare l'indirizzo IP pubblico
Ora che la rete virtuale è definita, è necessario configurare un indirizzo IP per connettersi alla macchina virtuale. Per questa esercitazione, creare un indirizzo IP pubblico mediante indirizzi IP dinamici per supportare la connettività Internet. Usare il cmdlet New-AzPublicIpAddress per creare l'indirizzo IP pubblico nel nuovo gruppo di risorse. Specificare le variabili inizializzate in precedenza per nome, posizione, metodo di allocazione ed etichetta del nome di dominio DNS.
Nota
È possibile definire altre proprietà dell'indirizzo IP pubblico usando questo cmdlet, ma questa operazione non rientra nell'ambito dell'esercitazione. È anche possibile creare un indirizzo privato o un indirizzo di tipo statico, ma anche questa procedura non rientra nell'ambito dell'esercitazione.
Eseguire questo cmdlet per creare l'indirizzo IP pubblico.
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Creare il gruppo di sicurezza di rete
Per proteggere la macchina virtuale e il traffico SQL Server, creare un gruppo di sicurezza di rete.
Creare due regole del gruppo di sicurezza di rete usando New-AzNetworkSecurityRuleConfig, una regola per desktop remoto (RDP) per consentire le connessioni RDP e una regola che consente il traffico sulla porta TCP 1433. In questo modo si abilita il collegamento a SQL Server tramite 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 AllowCreare il gruppo di sicurezza di rete usando New-AzNetworkSecurityGroup.
# Create a network security group $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName ` -Location $Location -Name $NsgName ` -SecurityRules $NsgRuleRDP,$NsgRuleSQL
Creare l'interfaccia di rete
È ora possibile creare l'interfaccia di rete per la macchina virtuale. Usare il cmdlet New-AzNetworkInterface per creare l'interfaccia di rete nel nuovo gruppo di risorse. Specificare il nome, la posizione, la subnet e l'indirizzo IP pubblico definiti in precedenza.
Eseguire questo cmdlet per creare l'interfaccia di rete.
# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
Configurare un oggetto VM
Dopo avere definito le risorse di archiviazione e di rete, è possibile definire le risorse di calcolo per la macchina virtuale.
- Specificare le dimensioni della macchina virtuale e varie proprietà del sistema operativo.
- Specificare l'interfaccia di rete creata in precedenza.
- Definire l'archivio BLOB.
- Specificare il disco del sistema operativo.
Creare la macchina virtuale SQL Server
Per creare la macchina virtuale SQL Server, creare prima un oggetto credenziale e quindi creare la macchina virtuale.
Creare un oggetto credenziali per includere il nome e la password per le credenziali di amministratore locale
Prima che sia possibile configurare le proprietà del sistema operativo per la macchina virtuale, è necessario specificare le credenziali per l'account di amministratore locale sotto forma di stringa sicura. Per eseguire questa operazione usare il cmdlet Get-Credential.
Eseguire il cmdlet seguente. Sarà necessario digitare il nome e la password dell'amministratore locale della macchina virtuale nella finestra di richiesta delle credenziali di PowerShell.
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Definire le proprietà e creare la macchina virtuale
A questo punto è possibile impostare le proprietà del sistema operativo della macchina virtuale con New-AzVMConfig, creare la macchina virtuale con New-AzVM e usare il cmdlet Add-AzVMNetworkInterface per aggiungere l'interfaccia di rete usando la variabile definita in precedenza.
Lo script di esempio esegue le operazioni seguenti:
- Richiedere l'installazione dell'agente per la macchina virtuale.
- Specifica che il cmdlet abilita l'aggiornamento automatico.
- Specifica le variabili inizializzate in precedenza per il nome della macchina virtuale, il nome del computer e le credenziali.
Eseguire questo cmdlet per configurare le proprietà del sistema operativo per la macchina virtuale.
# 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
La creazione della macchina virtuale è stata completata.
Nota
Se si verifica un errore sulla diagnostica di avvio, è possibile ignorarlo. Viene creato un account di archiviazione standard per la diagnostica di avvio, perché l'account di archiviazione specificato per il disco della macchina virtuale è un account di archiviazione Premium.
Installare l'estensione SQL Server IaaS Agent
Le macchine virtuali di SQL Server supportano le funzionalità di gestione automatizzate con l'estensione agente IaaS di SQL Server. Per registrare il SQL Server con l'estensione, eseguire il comando New-AzSqlVM dopo la creazione della macchina virtuale. Specificare il tipo di licenza per la macchina virtuale SQL Server, scegliendo tra pay-as-you-go (PAYG), il Azure Hybrid Benefit (AHUB) o disaster recovery (DR) per attivare la licenza gratuita di replica DR . Per altre informazioni sulle licenze, vedere Modello di licenza.
Per registrare la macchina virtuale SQL Server con l'estensione SQL IaaS Agent, registrare prima la sottoscrizione con il provider di risorse usando Register-AzResourceProvider e quindi registrare la macchina virtuale SQL Server con l'estensione 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
Esistono tre modi per eseguire la registrazione con l'estensione:
- Automaticamente, per tutte le macchine virtuali correnti e future in una sottoscrizione
- Manualmente, per una singola macchina virtuale
- Manualmente, per macchine virtuali multiple in blocco
Arrestare o rimuovere una macchina virtuale
Se non è necessario che la macchina virtuale sia continuamente in esecuzione, è possibile evitare addebiti superflui arrestandola quando non è in uso. Il comando seguente arresta la VM ma la lascia disponibile per un uso futuro.
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
È anche possibile eliminare definitivamente tutte le risorse associate alla macchina virtuale con il comando Remove-AzResourceGroup. In questo modo viene eliminata definitivamente anche la macchina virtuale, quindi usare questo comando con cautela.
Script completo
Per uno script di PowerShell completo che offre un'esperienza end-to-end, vedere Deploy SQL Server in Azure macchina virtuale con PowerShell.
Contenuto correlato
Dopo aver creato la macchina virtuale, è possibile:
- Connettersi alla macchina virtuale usando Bastion
- Configurare le impostazioni SQL Server nel portale per la macchina virtuale, tra cui:
- Configurare la connettività
- Connettere client e applicazioni alla nuova istanza di SQL Server