Använda Azure PowerShell för att skapa en SQL Server på en virtuell Azure-dator

Gäller för:SQL Server på en virtuell Azure-dator

Den här guiden beskriver alternativ för att använda PowerShell för att etablera en SQL Server på azure virtual machine (VM). Ett effektiviserat Azure PowerShell-exempel som förlitar sig på standardvärden finns i snabbstarten SQL Server på den virtuella Azure-datorn PowerShell.

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Kommentar

Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Konfigurera din prenumeration

  1. Öppna PowerShell och upprätta åtkomst till ditt Azure-konto genom att köra kommandot Connect-AzAccount.

    Connect-AzAccount
    
  2. Ange din inloggningsuppgifter när du uppmanas. Använd samma e-postadress och lösenord som du använder för att logga in på Azure Portal.

Definiera bildvariabler

Om du vill återanvända värden och förenkla skapandet av skript börjar du med att definiera ett antal variabler. Ändra parametervärdena som du vill, men var medveten om namngivningsbegränsningar relaterade till namnlängder och specialtecken när du ändrar de angivna värdena.

Plats och resursgrupp

Definiera dataregionen och resursgruppen där du vill skapa de andra vm-resurserna.

Ändra som du vill och kör sedan dessa cmdletar för att initiera dessa variabler.

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

Lagringsegenskaper

Definiera lagringskontot och vilken typ av lagring som ska användas av den virtuella datorn.

Ändra som du vill och kör sedan följande cmdlet för att initiera dessa variabler. Vi rekommenderar att du använder Premium SSD för produktionsarbetsbelastningar.

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

Nätverksegenskaper

Definiera de egenskaper som ska användas av nätverket på den virtuella datorn.

  • Nätverksgränssnitt
  • TCP/IP-allokeringsmetod
  • Virtuellt nätverksnamn
  • Namn på virtuellt undernät
  • Intervall med IP-adresser för det virtuella nätverket
  • Intervall med IP-adresser för undernätet
  • Etikett för offentligt domännamn

Ändra som du vill och kör sedan den här cmdleten för att initiera dessa variabler.

$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

Egenskaper för virtuella datorer

Definiera följande egenskaper:

  • Virtual machine name
  • Datornamn
  • Storlek för virtuell dator
  • Namnet på operativsystemdisken för den virtuella datorn

Ändra som du vill och kör sedan den här cmdleten för att initiera dessa variabler.

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

Välj en SQL Server-avbildning

Använd följande variabler för att definiera SQL Server-avbildningen som ska användas för den virtuella datorn.

  1. Börja med att lista alla SQL Server-avbildningserbjudanden med Get-AzVMImageOffer kommandot . Det här kommandot visar de aktuella avbildningar som är tillgängliga i Azure-portalen och även äldre avbildningar som bara kan installeras med PowerShell:

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

    Kommentar

    SQL Server 2008 och SQL Server 2008 R2 saknar utökad support och är inte längre tillgängliga från Azure Marketplace.

  2. I den här självstudien använder du följande variabler för att ange SQL Server 2022 på Windows Server 2022.

    $OfferName = "SQL2022-WS2022"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Därefter listar du de tillgängliga utgåvorna för ditt erbjudande.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. I den här självstudien använder du SQL Server 2022 Developer Edition (SQLDEV). Developer-utgåvan är fritt licensierad för testning och utveckling och du betalar bara för kostnaden för att köra den virtuella datorn.

    $Sku = "SQLDEV"
    

Skapa en resursgrupp

Med Resource Manager-distributionsmodellen är det första objektet som du skapar resursgruppen. Använd cmdleten New-AzResourceGroup för att skapa en Azure-resursgrupp och dess resurser. Ange de variabler som du tidigare initierade för resursgruppens namn och plats.

Kör den här cmdleten för att skapa den nya resursgruppen.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

Skapa ett lagringskonto

Den virtuella datorn kräver lagringsresurser för operativsystemdisken och för SQL Server-data och loggfiler. För enkelhetens skull skapar du en enda disk för båda. Du kan ansluta ytterligare diskar senare med hjälp av cmdleten Add-Azure Disk för att placera dina SQL Server-data och loggfiler på dedikerade diskar. Använd cmdleten New-AzStorageAccount för att skapa ett standardlagringskonto i den nya resursgruppen. Ange de variabler som du tidigare initierade för lagringskontots namn, lagrings-SKU-namn och plats.

Kör den här cmdleten för att skapa ditt nya lagringskonto.

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

Dricks

Det kan ta några minuter att skapa lagringskontot.

Skapa nätverksresurser

Den virtuella datorn kräver ett antal nätverksresurser för nätverksanslutning.

  • Varje virtuell dator kräver ett virtuellt nätverk.
  • Ett virtuellt nätverk måste ha minst ett definierat undernät.
  • Ett nätverksgränssnitt måste definieras med antingen en offentlig eller en privat IP-adress.

Skapa en undernätskonfiguration för virtuellt nätverk

Börja med att skapa en undernätskonfiguration för ditt virtuella nätverk. I den här självstudien skapar du ett standardundernät med cmdleten New-AzVirtualNetworkSubnetConfig . Ange de variabler som du tidigare initierade för undernätets namn och adressprefix.

Kommentar

Du kan definiera ytterligare egenskaper för konfigurationen av det virtuella nätverkets undernät med den här cmdleten, men det ligger utanför omfånget för den här självstudien.

Kör den här cmdleten för att skapa konfigurationen av det virtuella undernätet.

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

Skapa ett virtuellt nätverk

Skapa sedan ditt virtuella nätverk i den nya resursgruppen med hjälp av cmdleten New-AzVirtualNetwork . Ange de variabler som du tidigare initierade för prefixet namn, plats och adress. Använd den undernätskonfiguration som du definierade i föregående steg.

Kör den här cmdleten för att skapa ditt virtuella nätverk.

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

Skapa den offentliga IP-adressen

Nu när det virtuella nätverket har definierats måste du konfigurera en IP-adress för anslutning till den virtuella datorn. I den här självstudien skapar du en offentlig IP-adress med dynamisk IP-adressering för att stödja Internetanslutning. Använd cmdleten New-AzPublicIpAddress för att skapa den offentliga IP-adressen i den nya resursgruppen. Ange de variabler som du tidigare initierade för namn, plats, allokeringsmetod och DNS-domännamnsetikett.

Kommentar

Du kan definiera ytterligare egenskaper för den offentliga IP-adressen med den här cmdleten, men det ligger utanför omfånget för den här inledande självstudien. Du kan också skapa en privat adress eller en adress med en statisk adress, men det ligger också utanför omfånget för den här självstudien.

Kör den här cmdleten för att skapa din offentliga IP-adress.

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

Skapa nätverkssäkerhetsgruppen

Skapa en nätverkssäkerhetsgrupp för att skydda den virtuella datorn och SQL Server-trafiken.

  1. Skapa först en regel för nätverkssäkerhetsgrupp för fjärrskrivbord (RDP) för att tillåta RDP-anslutningar.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. Konfigurera en regel för nätverkssäkerhetsgrupp som tillåter trafik på TCP-port 1433. Detta möjliggör anslutningar till SQL Server via Internet.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Skapa nätverkssäkerhetsgruppen.

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

Skapa nätverksgränssnittet

Nu är du redo att skapa nätverksgränssnittet för den virtuella datorn. Använd cmdleten New-AzNetworkInterface för att skapa nätverksgränssnittet i den nya resursgruppen. Ange namn, plats, undernät och offentlig IP-adress som tidigare definierats.

Kör den här cmdleten för att skapa nätverksgränssnittet.

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

Konfigurera ett VM-objekt

Nu när lagrings- och nätverksresurser har definierats är du redo att definiera beräkningsresurser för den virtuella datorn.

  • Ange storleken på den virtuella datorn och olika operativsystemegenskaper.
  • Ange det nätverksgränssnitt som du skapade tidigare.
  • Definiera bloblagring.
  • Ange operativsystemdisken.

Skapa VM-objektet

Börja med att ange storleken på den virtuella datorn. I den här självstudien anger du en DS13. Använd cmdleten New-AzVMConfig för att skapa ett konfigurerbart virtuellt datorobjekt. Ange de variabler som du tidigare initierade för namnet och storleken.

Kör den här cmdleten för att skapa objektet för den virtuella datorn.

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

Skapa ett autentiseringsobjekt för att lagra namn och lösenord för autentiseringsuppgifterna för den lokala administratören

Innan du kan ange operativsystemets egenskaper för den virtuella datorn måste du ange autentiseringsuppgifterna för det lokala administratörskontot som en säker sträng. Det gör du genom att använda cmdleten Get-Credential .

Kör följande cmdlet. Du måste ange den virtuella datorns lokala administratörsnamn och lösenord i fönstret för PowerShell-begäran om autentiseringsuppgifter.

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

Ange operativsystemets egenskaper för den virtuella datorn

Nu är du redo att ange den virtuella datorns operativsystemegenskaper med cmdleten Set-AzVMOperatingSystem .

  • Ange typ av operativsystem som Windows.
  • Kräv att den virtuella datoragenten installeras.
  • Ange att cmdleten aktiverar automatisk uppdatering.
  • Ange de variabler som du tidigare initierade för namnet på den virtuella datorn, datornamnet och autentiseringsuppgifterna.

Kör den här cmdleten för att ange operativsystemegenskaperna för den virtuella datorn.

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

Lägg till nätverksgränssnittet på den virtuella datorn

Använd sedan cmdleten Add-AzVMNetworkInterface för att lägga till nätverksgränssnittet med hjälp av variabeln som du definierade tidigare.

Kör den här cmdleten för att ange nätverksgränssnittet för den virtuella datorn.

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

Ange bloblagringsplatsen för disken som ska användas av den virtuella datorn

Ange sedan bloblagringsplatsen för den virtuella datorns disk med de variabler som du definierade tidigare.

Kör den här cmdleten för att ange bloblagringsplatsen.

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

Ange operativsystemets diskegenskaper för den virtuella datorn

Ange sedan operativsystemets diskegenskaper för den virtuella datorn med hjälp av cmdleten Set-AzVMOSDisk .

  • Ange att operativsystemet för den virtuella datorn ska komma från en avbildning.
  • Ange cachelagring till skrivskyddad (eftersom SQL Server installeras på samma disk).
  • Ange de variabler som du tidigare initierade för namnet på den virtuella datorn och operativsystemdisken.

Kör den här cmdleten för att ange operativsystemets diskegenskaper för den virtuella datorn.

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

Ange plattformsbilden för den virtuella datorn

Det sista konfigurationssteget är att ange plattformsbilden för den virtuella datorn. I den här självstudien använder du den senaste SQL Server 2016 CTP-avbildningen. Använd cmdleten Set-AzVMSourceImage för att använda den här bilden med de variabler som du definierade tidigare.

Kör den här cmdleten för att ange plattformsbilden för den virtuella datorn.

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

Skapa den virtuella SQL-datorn

Nu när du har slutfört konfigurationsstegen är du redo att skapa den virtuella datorn. Använd cmdleten New-AzVM för att skapa den virtuella datorn med hjälp av de variabler som du definierade.

Dricks

Det kan ta några minuter att skapa den virtuella datorn.

Kör den här cmdleten för att skapa den virtuella datorn.

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

Den virtuella datorn skapas.

Kommentar

Om du får ett fel om startdiagnostik kan du ignorera det. Ett standardlagringskonto skapas för startdiagnostik eftersom det angivna lagringskontot för den virtuella datorns disk är ett Premium Storage-konto.

Installera tillägget för SQL IaaS Agent

Virtuella SQL Server-datorer stöder automatiserade hanteringsfunktioner med SQL Server IaaS-agenttillägget. Om du vill registrera DIN SQL Server med tillägget kör du kommandot New-AzSqlVM när den virtuella datorn har skapats. Ange licenstypen för den virtuella SQL Server-datorn och välj antingen betala per användning eller bring-your-own-license via Azure Hybrid-förmån. Mer information om licensiering finns i licensieringsmodellen.

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

Det finns tre sätt att registrera med tillägget:

Stoppa eller ta bort en virtuell dator

Om du inte behöver köra den virtuella SQL-datorn kontinuerligt kan du undvika onödiga kostnader genom att stoppa den när den inte används. Följande kommando stoppar den virtuella datorn men lämnar den tillgänglig för framtida bruk.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Du kan även permanent ta bort alla resurser som är kopplade till den virtuella datorn med kommandot Remove-AzResourceGroup. Det här tar även permanent bort den virtuella datorn, så använd det här kommandot med försiktighet.

Exempelskript

Följande skript innehåller det fullständiga PowerShell-skriptet för den här självstudien. Det förutsätter att du redan har konfigurerat Azure-prenumerationen att använda med kommandona Anslut-AzAccount och 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> 

Nästa steg

När den virtuella datorn har skapats kan du: