Azure PowerShell gebruiken om een SQL Server op azure-VM te maken

Van toepassing op: SQL Server op Azure VM

Deze handleiding bevat opties voor het gebruik van PowerShell voor het inrichten van een SQL Server op een virtuele Azure-machine (VM). Zie de quickstart voor SQL Server op Azure VM PowerShell voor een gestroomlijnd Azure PowerShell-voorbeeld dat afhankelijk is van standaardwaarden.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Notitie

In dit artikel wordt gebruikgemaakt van de Azure Az PowerShell-module. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Uw abonnement configureren

  1. Open PowerShell en zorg dat u toegang hebt tot uw Azure-account door de opdracht Connect-AzAccount uit te voeren.

    Connect-AzAccount
    
  2. Voer uw inloggegevens in wanneer dit gevraagd wordt. Gebruik hetzelfde e-mailadres en wachtwoord waarmee u zich aanmeldt bij Azure Portal.

Afbeeldingsvariabelen definiëren

Als u waarden opnieuw wilt gebruiken en het maken van scripts wilt vereenvoudigen, begint u met het definiëren van een aantal variabelen. Wijzig de parameterwaarden zoals u wilt, maar houd rekening met naambeperkingen met betrekking tot naamlengten en speciale tekens bij het wijzigen van de opgegeven waarden.

Locatie en resourcegroep

Definieer de gegevensregio en de resourcegroep waar u de andere VM-resources wilt maken.

Wijzig naar wens en voer deze cmdlets uit om deze variabelen te initialiseren.

$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"

Opslageigenschappen

Definieer het opslagaccount en het type opslag dat moet worden gebruikt door de virtuele machine.

Wijzig naar wens en voer vervolgens de volgende cmdlet uit om deze variabelen te initialiseren. We raden u aan premium SSD's te gebruiken voor productieworkloads .

$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"

Netwerkeigenschappen

Definieer de eigenschappen die door het netwerk in de virtuele machine moeten worden gebruikt.

  • Netwerkinterface
  • TCP/IP-toewijzingsmethode
  • Naam van virtueel netwerk
  • Naam van virtueel subnet
  • Bereik van IP-adressen voor het virtuele netwerk
  • Bereik van IP-adressen voor het subnet
  • Label van openbare domeinnaam

Wijzig naar wens en voer deze cmdlet uit om deze variabelen te initialiseren.

$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

Eigenschappen van virtuele machines

Definieer de volgende eigenschappen:

  • Virtual machine name
  • Computernaam
  • Grootte van de virtuele machine
  • Naam van besturingssysteemschijf voor de virtuele machine

Wijzig naar wens en voer deze cmdlet uit om deze variabelen te initialiseren.

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

Een SQL Server-installatiekopieën kiezen

Gebruik de volgende variabelen om de SQL Server-installatiekopieën te definiëren die moeten worden gebruikt voor de virtuele machine.

  1. Vermeld eerst alle AANBIEDINGEN van SQL Server-installatiekopieën met de Get-AzVMImageOffer opdracht. Met deze opdracht worden de huidige installatiekopieën weergegeven die beschikbaar zijn in Azure Portal en oudere installatiekopieën die alleen kunnen worden geïnstalleerd met PowerShell:

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

    Notitie

    SQL Server 2008 en SQL Server 2008 R2 zijn niet langer beschikbaar via Azure Marketplace.

  2. Voor deze zelfstudie gebruikt u de volgende variabelen om SQL Server 2022 op te geven in Windows Server 2022.

    $OfferName = "SQL2022-WS2022"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Vermeld vervolgens de beschikbare edities voor uw aanbieding.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Gebruik voor deze zelfstudie de SQL Server 2022 Developer Edition (SQLDEV). De Developer-editie is gratis gelicentieerd voor testen en ontwikkelen, en u betaalt alleen voor de kosten voor het uitvoeren van de VIRTUELE machine.

    $Sku = "SQLDEV"
    

Een brongroep maken

Met het Resource Manager-implementatiemodel is het eerste object dat u maakt de resourcegroep. Gebruik de cmdlet New-AzResourceGroup om een Azure-resourcegroep en de bijbehorende resources te maken. Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam en locatie van de resourcegroep.

Voer deze cmdlet uit om uw nieuwe resourcegroep te maken.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

Een opslagaccount maken

De virtuele machine vereist opslagbronnen voor de besturingssysteemschijf en voor de SQL Server-gegevens en logboekbestanden. Ter vereenvoudiging maakt u één schijf voor beide. U kunt later extra schijven koppelen met behulp van de cmdlet Add-Azure Disk om uw SQL Server-gegevens en logboekbestanden op toegewezen schijven te plaatsen. Gebruik de cmdlet New-AzStorageAccount om een standaardopslagaccount te maken in uw nieuwe resourcegroep. Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam van het opslagaccount, de naam van de opslag-SKU en de locatie.

Voer deze cmdlet uit om uw nieuwe opslagaccount te maken.

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

Tip

Het maken van het opslagaccount kan enkele minuten duren.

Netwerkbronnen maken

De virtuele machine vereist een aantal netwerkbronnen voor netwerkconnectiviteit.

  • Voor elke virtuele machine is een virtueel netwerk vereist.
  • Een virtueel netwerk moet ten minste één subnet hebben gedefinieerd.
  • Er moet een netwerkinterface worden gedefinieerd met een openbaar of een privé-IP-adres.

Een subnetconfiguratie voor een virtueel netwerk maken

Begin met het maken van een subnetconfiguratie voor uw virtuele netwerk. Maak voor deze zelfstudie een standaardsubnet met behulp van de cmdlet New-AzVirtualNetworkSubnetConfig . Geef de variabelen op die u eerder hebt geïnitialiseerd voor de subnetnaam en het adresvoorvoegsel.

Notitie

U kunt aanvullende eigenschappen van de subnetconfiguratie van het virtuele netwerk definiëren met behulp van deze cmdlet, maar dat valt buiten het bereik van deze zelfstudie.

Voer deze cmdlet uit om uw virtuele subnetconfiguratie te maken.

$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix

Een virtueel netwerk maken

Maak vervolgens uw virtuele netwerk in uw nieuwe resourcegroep met behulp van de cmdlet New-AzVirtualNetwork . Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam, locatie en adresvoorvoegsel. Gebruik de subnetconfiguratie die u in de vorige stap hebt gedefinieerd.

Voer deze cmdlet uit om uw virtuele netwerk te maken.

$VNet = New-AzVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

Het openbare IP-adres maken

Nu uw virtuele netwerk is gedefinieerd, moet u een IP-adres configureren voor connectiviteit met de virtuele machine. Voor deze zelfstudie maakt u een openbaar IP-adres met behulp van dynamische IP-adressering ter ondersteuning van de internetverbinding. Gebruik de cmdlet New-AzPublicIpAddress om het openbare IP-adres in uw nieuwe resourcegroep te maken. Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam, locatie, toewijzingsmethode en dns-domeinnaamlabel.

Notitie

U kunt aanvullende eigenschappen van het openbare IP-adres definiëren met behulp van deze cmdlet, maar dat valt buiten het bereik van deze eerste zelfstudie. U kunt ook een privéadres of een adres met een statisch adres maken, maar dat valt ook buiten het bereik van deze zelfstudie.

Voer deze cmdlet uit om uw openbare IP-adres te maken.

$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName

De netwerkbeveiligingsgroep maken

Maak een netwerkbeveiligingsgroep om het vm- en SQL Server-verkeer te beveiligen.

  1. Maak eerst een regel voor netwerkbeveiligingsgroepen voor extern bureaublad (RDP) om RDP-verbindingen toe te staan.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. Configureer een netwerkbeveiligingsgroepregel die verkeer op TCP-poort 1433 toestaat. Hierdoor worden verbindingen met SQL Server via internet mogelijk.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Maak de netwerkbeveiligingsgroep.

    $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
       -Location $Location -Name $NsgName `
       -SecurityRules $NsgRuleRDP,$NsgRuleSQL
    

De netwerkinterface maken

U bent nu klaar om de netwerkinterface voor uw virtuele machine te maken. Gebruik de cmdlet New-AzNetworkInterface om de netwerkinterface in uw nieuwe resourcegroep te maken. Geef de naam, locatie, subnet en openbaar IP-adres op die eerder zijn gedefinieerd.

Voer deze cmdlet uit om uw netwerkinterface te maken.

$Interface = New-AzNetworkInterface -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
   -NetworkSecurityGroupId $Nsg.Id

Een VM-object configureren

Nu opslag- en netwerkresources zijn gedefinieerd, kunt u rekenresources voor de virtuele machine definiëren.

  • Geef de grootte van de virtuele machine en verschillende eigenschappen van het besturingssysteem op.
  • Geef de netwerkinterface op die u eerder hebt gemaakt.
  • Blob-opslag definiëren.
  • Geef de besturingssysteemschijf op.

Het VM-object maken

Geef eerst de grootte van de virtuele machine op. Geef voor deze zelfstudie een DS13 op. Gebruik de cmdlet New-AzVMConfig om een configureerbaar virtuele-machineobject te maken. Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam en grootte.

Voer deze cmdlet uit om het virtuele-machineobject te maken.

$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize

Een referentieobject maken voor het opslaan van de naam en het wachtwoord voor de lokale beheerdersreferenties

Voordat u de eigenschappen van het besturingssysteem voor de virtuele machine kunt instellen, moet u de referenties voor het lokale beheerdersaccount opgeven als een beveiligde tekenreeks. Gebruik hiervoor de cmdlet Get-Credential .

Voer de volgende cmdlet uit. U moet de lokale beheerdersnaam en het wachtwoord van de virtuele machine typen in het powerShell-referentieaanvraagvenster.

$Credential = Get-Credential -Message "Type the name and password of the local administrator account."

De eigenschappen van het besturingssysteem voor de virtuele machine instellen

U kunt nu de eigenschappen van het besturingssysteem van de virtuele machine instellen met de cmdlet Set-AzVMOperatingSystem .

  • Stel het type besturingssysteem in als Windows.
  • Vereisen dat de virtuele-machineagent is geïnstalleerd.
  • Geef op dat de cmdlet automatisch bijwerken inschakelt.
  • Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam van de virtuele machine, de computernaam en de referentie.

Voer deze cmdlet uit om de eigenschappen van het besturingssysteem voor uw virtuele machine in te stellen.

$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine `
   -Windows -ComputerName $ComputerName -Credential $Credential `
   -ProvisionVMAgent -EnableAutoUpdate

De netwerkinterface toevoegen aan de virtuele machine

Gebruik vervolgens de cmdlet Add-AzVMNetworkInterface om de netwerkinterface toe te voegen met behulp van de variabele die u eerder hebt gedefinieerd.

Voer deze cmdlet uit om de netwerkinterface voor uw virtuele machine in te stellen.

$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id

Stel de blobopslaglocatie in voor de schijf die moet worden gebruikt door de virtuele machine

Stel vervolgens de blobopslaglocatie voor de schijf van de VIRTUELE machine in met de variabelen die u eerder hebt gedefinieerd.

Voer deze cmdlet uit om de blobopslaglocatie in te stellen.

$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"

De schijfeigenschappen van het besturingssysteem voor de virtuele machine instellen

Stel vervolgens de schijfeigenschappen van het besturingssysteem voor de virtuele machine in met behulp van de cmdlet Set-AzVMOSDisk .

  • Geef op dat het besturingssysteem voor de virtuele machine afkomstig is van een installatiekopieën.
  • Stel opslaan in cache in op alleen-lezen (omdat SQL Server op dezelfde schijf wordt geïnstalleerd).
  • Geef de variabelen op die u eerder hebt geïnitialiseerd voor de naam van de VIRTUELE machine en de besturingssysteemschijf.

Voer deze cmdlet uit om de schijfeigenschappen van het besturingssysteem voor uw virtuele machine in te stellen.

$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name `
   $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage

De platforminstallatiekopieën voor de virtuele machine opgeven

De laatste configuratiestap is het opgeven van de platforminstallatiekopieën voor uw virtuele machine. Gebruik voor deze zelfstudie de nieuwste INSTALLATIEkopieën van SQL Server 2016 CTP. Gebruik de cmdlet Set-AzVMSourceImage om deze installatiekopie te gebruiken met de variabelen die u eerder hebt gedefinieerd.

Voer deze cmdlet uit om de platforminstallatiekopieën voor uw virtuele machine op te geven.

$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine `
   -PublisherName $PublisherName -Offer $OfferName `
   -Skus $Sku -Version $Version

De SQL-VM maken

Nu u klaar bent met de configuratiestappen, kunt u de virtuele machine maken. Gebruik de cmdlet New-AzVM om de virtuele machine te maken met behulp van de variabelen die u hebt gedefinieerd.

Tip

Het opstarten van de virtuele machine kan enkele minuten duren.

Voer deze cmdlet uit om uw virtuele machine te maken.

New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

De virtuele machine wordt gemaakt.

Notitie

Als u een foutmelding krijgt over diagnostische gegevens over opstarten, kunt u deze negeren. Er wordt een standaardopslagaccount gemaakt voor diagnostische gegevens over opstarten omdat het opgegeven opslagaccount voor de schijf van de virtuele machine een Premium-opslagaccount is.

Installeer de SQL IaaS Agent-extensie

Virtuele SQL Server-machines ondersteunen geautomatiseerde beheerfuncties met de SQL Server IaaS Agent-extensie. Als u uw SQL Server wilt registreren bij de extensie, voert u de opdracht New-AzSqlVM uit nadat de virtuele machine is gemaakt. Geef het licentietype op voor uw SQL Server-VM, waarbij u kiest tussen betalen per gebruik of bring-your-own-license via Azure Hybrid Benefit. Zie het licentiemodel voor meer informatie over licenties.

New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB> 

Er zijn drie manieren om u te registreren bij de extensie:

Een VIRTUELE machine stoppen of verwijderen

Als het niet nodig is dat de VM continu wordt uitgevoerd, kunt u onnodige kosten voorkomen door de virtuele machine te stoppen wanneer deze niet in gebruik is. Met de volgende opdracht wordt de VM gestopt, maar blijft deze beschikbaar voor toekomstig gebruik.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

U kunt ook alle resources die aan de virtuele machine zijn gekoppeld, definitief verwijderen met de opdracht Remove-AzResourceGroup. Wees voorzichtig met het gebruik van deze opdracht, want hiermee verwijdert u ook de virtuele machine zelf definitief.

Voorbeeldscript

Het volgende script bevat het volledige PowerShell-script voor deze zelfstudie. Hierbij wordt ervan uitgegaan dat u het Azure-abonnement al hebt ingesteld voor gebruik met de opdrachten Verbinding maken-AzAccount en 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> 

Volgende stappen

Nadat de virtuele machine is gemaakt, kunt u het volgende doen: