Informatie over het gebruik Azure PowerShell voor het inrichten SQL Server azure-Virtual Machines

VAN TOEPASSING OP: SQL Server op virtuele Azure-machine

Deze handleiding bevat opties voor het gebruik van PowerShell voor het inrichten SQL Server azure Virtual Machines (VM's). Voor een gestroomlijnd Azure PowerShell voorbeeld dat afhankelijk is van standaardwaarden, zie SQL VM Azure PowerShell quickstart.

Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.

Notitie

In dit artikel wordt de Azure Az PowerShell-module gebruikt. 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 referenties in wanneer dit wordt gevraagd. 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 let op de naamgevingsbeperkingen met betrekking tot naamlengten en speciale tekens bij het wijzigen van de opgegeven waarden.

Locatie en resourcegroep

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

Wijzig naar eigen goed wil en voer deze cmdlets uit om deze variabelen te initialiseren.

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

Storage eigenschappen

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

Wijzig naar eigen goed wil en voer de volgende cmdlet uit om deze variabelen te initialiseren. We raden u aan Premium -SD's te gebruiken voor productieworkloads.

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

Netwerkeigenschappen

De eigenschappen definiëren die door het netwerk moeten worden gebruikt in de virtuele machine.

  • 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 eigen goed wil 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:

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

Wijzig naar eigen goed wil 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 kiezen

Gebruik de volgende variabelen om de SQL Server voor de virtuele machine te definiëren.

  1. Vermeld eerst alle SQL Server afbeeldingsaanbiedingen met de Get-AzVMImageOffer opdracht . Met deze opdracht worden de huidige installatie afbeeldingen vermeld die beschikbaar zijn in de Azure Portal en oudere installatie afbeeldingen die alleen kunnen worden geïnstalleerd met PowerShell:

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    
  2. Gebruik voor deze zelfstudie de volgende variabelen om een SQL Server 2017 op Windows Server 2016.

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

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Voor deze zelfstudie gebruikt u de SQL Server Developer Edition (SQLDEV) van 2017. De Developer-editie is vrij gelicentieerd voor testen en ontwikkeling en u betaalt alleen voor de kosten van het uitvoeren van de VM.

    $Sku = "SQLDEV"
    

Een resourcegroep 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 resources ervan te maken. Geef de variabelen op die u eerder hebt initialiseerd 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 en logboekbestanden. Voor het gemak maakt u één schijf voor beide. U kunt later extra schijven koppelen met behulp van de cmdlet Add-Azure Disk om uw SQL Server 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 initialiseerd 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.

  • Elke virtuele machine vereist een virtueel netwerk.
  • Voor een virtueel netwerk moet ten minste één subnet zijn gedefinieerd.
  • Een netwerkinterface moet 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. Voor deze zelfstudie maakt u een standaardsubnet met de cmdlet New-AzVirtualNetworkSubnetConfig. Geef de variabelen op die u eerder hebt initialiseerd voor de subnetnaam en het adres voorvoegsel.

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 de nieuwe resourcegroep met behulp van de cmdlet New-AzVirtualNetwork. Geef de variabelen op die u eerder hebt initialiseerd voor het voorvoegsel naam, locatie en adres. 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 dynamische IP-adressering ter ondersteuning van 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 initialiseerd voor de naam, locatie, toewijzingsmethode en dns-domeinnaamlabel.

Notitie

U kunt aanvullende eigenschappen van het openbare IP-adres definiëren met 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 de virtuele SQL Server en verkeer te beveiligen.

  1. Maak eerst een netwerkbeveiligingsgroepsregel 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 netwerkbeveiligingsgroepsregel die verkeer op TCP-poort 1433 toestaat. Hierdoor kunnen verbindingen via SQL Server internet worden verbonden.

    $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 netwerkbronnen zijn gedefinieerd, kunt u rekenbronnen voor de virtuele machine definiëren.

  • Geef de grootte van de virtuele machine en de verschillende eigenschappen van het besturingssysteem op.
  • Geef de netwerkinterface op die u eerder hebt gemaakt.
  • Definieer blobopslag.
  • 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 initialiseerd voor de naam en grootte.

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

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

Maak een referentieobject voor 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 als een beveiligde tekenreeks gebruiken. Gebruik hiervoor de cmdlet Get-Credential.

Voer de volgende cmdlet uit. U moet de lokale beheerdersnaam en het wachtwoord van de VM invoeren in het venster PowerShell-referentieaanvraag.

$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 bent nu klaar om de eigenschappen van het besturingssysteem van de virtuele machine in te stellen met de cmdlet Set-AzVMOperatingSystem.

  • Stel het type besturingssysteem in op Windows.
  • Vereisen dat de virtuele-machineagent wordt geïnstalleerd.
  • Geef op dat de cmdlet automatisch bijwerken in staat stelt.
  • Geef de variabelen op die u eerder hebt initialiseerd 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

De blobopslaglocatie instellen voor de schijf die moet worden gebruikt door de virtuele machine

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

Voer deze cmdlet uit om de locatie van de blobopslag 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 installatie afbeelding.
  • Stel caching in op alleen-lezen (omdat SQL Server op dezelfde schijf wordt geïnstalleerd).
  • Geef de variabelen op die u eerder hebt initialiseerd voor de VM-naam 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 platformafbeelding voor de virtuele machine opgeven

De laatste configuratiestap is het opgeven van de platformafbeelding voor uw virtuele machine. Gebruik voor deze zelfstudie de meest recente SQL Server 2016 CTP-afbeelding. Gebruik de cmdlet Set-AzVMSourceImage om deze afbeelding te gebruiken met de variabelen die u eerder hebt gedefinieerd.

Voer deze cmdlet uit om de platformafbeelding 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 de configuratiestappen hebt voltooid, bent u klaar om de virtuele machine te 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 er een fout over diagnostische gegevens over opstarten wordt weergegeven, 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 Storage-account is.

SQL IaaS-agent installeren

SQL Server virtuele machines ondersteunen geautomatiseerde beheerfuncties met de SQL Server IaaS-agentextensie. Als u uw SQL Server bij de extensie, moet u de opdracht New-AzSqlVM uitvoeren nadat de virtuele machine is gemaakt. Geef het licentietype voor uw SQL Server-VM op en kies via de Azure Hybrid Benefit . Zie licentiemodel voor meer informatie over licentieverlening.

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

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

Een VM 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. Er wordt vanuit gaat 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 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: