Så här använder du Azure PowerShell för att SQL Server på Azure Virtual Machines
GÄLLER FÖR:
SQL Server på virtuella Azure-datorer
Den här guiden beskriver alternativ för att använda PowerShell för att SQL Server på Azure Virtual Machines (VM). Ett effektivt exempel Azure PowerShell som förlitar sig på standardvärden finns i SQL vm Azure PowerShell snabbstart.
Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Anteckning
I den här artikeln används Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för att interagera 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
Öppna PowerShell och upprätta åtkomst till ditt Azure-konto genom att köra kommandot Connect-AzAccount.
Connect-AzAccountAnge dina autentiseringsuppgifter när du uppmanas att göra det. 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 tänk på namngivningsbegränsningar relaterade till namnlängder och specialtecken när du ändrar de angivna värdena.
Plats och resursgrupp
Definiera dataområdet och resursgruppen där du vill skapa de andra VM-resurserna.
Ändra som du vill och kör sedan dessa cmdlets för att initiera dessa variabler.
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"
Storage egenskaper
Definiera lagringskontot och typen 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:er 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
- IP-adressintervall för det virtuella nätverket
- Ip-adressintervall för undernätet
- Etikett för offentligt domännamn
Ändra som du vill och kör sedan denna cmdlet 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 virtuell dator
Definiera följande egenskaper:
- Namn på virtuell dator
- Datornamn
- Storlek för virtuell dator
- Namn på operativsystemdisk för den virtuella datorn
Ändra som du vill och kör sedan denna cmdlet för att initiera dessa variabler.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Välj en SQL Server bild
Använd följande variabler för att definiera SQL Server som ska användas för den virtuella datorn.
Börja med att lista alla SQL Server avbildningserbjudanden med
Get-AzVMImageOfferkommandot . Det här kommandot visar de aktuella avbildningar som är tillgängliga i Azure Portal och även äldre avbildningar som endast kan installeras med PowerShell:Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'I den här självstudien använder du följande variabler för att SQL Server 2017 på Windows Server 2016.
$OfferName = "SQL2017-WS2016" $PublisherName = "MicrosoftSQLServer" $Version = "latest"Lista sedan de tillgängliga versionerna för ditt erbjudande.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select SkusI den här självstudien använder du SQL Server 2017 Developer edition (SQLDEV). Developer Edition ä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 den 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 initierade tidigare 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 cmdleten Add-Azure Disk för att placera dina SQL Server 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 initierade tidigare 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
Tips
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 initierade tidigare för undernätets namn och adressprefix.
Anteckning
Du kan definiera ytterligare egenskaper för konfigurationen av det virtuella nätverkets undernät med hjälp av denna cmdlet, 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 det virtuella nätverket i den nya resursgruppen med hjälp av cmdleten New-AzVirtualNetwork. Ange de variabler som du initierade tidigare för namn, plats och adressprefix. Använd undernätskonfigurationen 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 hjälp av 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 initierade tidigare för namn, plats, allokeringsmetod och DNS-domännamnsetikett.
Anteckning
Du kan definiera ytterligare egenskaper för den offentliga IP-adressen med hjälp av 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
Om du vill skydda den virtuella SQL Server skapa en nätverkssäkerhetsgrupp.
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 AllowKonfigurera en regel för nätverkssäkerhetsgrupp som tillåter trafik på TCP-port 1433. Detta gör att anslutningar kan SQL Server via Internet.
$NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule" -Protocol Tcp ` -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 1433 -Access AllowSkapa 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 definierats tidigare.
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 storlek på den virtuella datorn och olika egenskaper för operativsystemet.
- Ange nätverksgränssnittet som du skapade tidigare.
- Definiera bloblagring.
- Ange operativsystemdisken.
Skapa VM-objektet
Börja med att ange storleken på den virtuella datorn. För 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 initierade tidigare för namn och storlek.
Kör den här cmdleten för att skapa det virtuella datorobjektet.
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
Skapa ett autentiseringsobjekt för att lagra namn och lösenord för de lokala administratörsautentiseringsuppgifterna
Innan du kan ange egenskaperna för operativsystemet för den virtuella datorn måste du ange autentiseringsuppgifterna för det lokala administratörskontot som en säker sträng. För att åstadkomma detta använder du 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 begäran om PowerShell-autentiseringsuppgifter.
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
Ange egenskaper för operativsystemet 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 autentiseringsnamnet.
Kör den här cmdleten för att ange operativsystemets egenskaper för den virtuella datorn.
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine `
-Windows -ComputerName $ComputerName -Credential $Credential `
-ProvisionVMAgent -EnableAutoUpdate
Lägga till nätverksgränssnittet till 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 bloblagringsplats 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 egenskaper för operativsystemdisken för den virtuella datorn
Ange sedan egenskaperna för operativsystemdisken för den virtuella datorn med hjälp av cmdleten Set-AzVMOSDisk.
- Ange att operativsystemet för den virtuella datorn kommer från en avbildning.
- Ange cachelagring till skrivskyddade (eftersom SQL Server installeras på samma disk).
- Ange de variabler som du initierade tidigare 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 plattformsavbildningen för den virtuella datorn
Det sista konfigurationssteget är att ange plattformsavbildningen för den virtuella datorn. I den här självstudien använder du den SQL Server CTP-avbildningen från 2016. Använd cmdleten Set-AzVMSourceImage för att använda den här avbildningen med de variabler som du definierade tidigare.
Kör den här cmdleten för att ange plattformsavbildningen 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 har definierat.
Tips
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.
Anteckning
Om du får ett felmeddelande om startdiagnostik kan du ignorera det. Ett standardlagringskonto skapas för startdiagnostik eftersom det angivna lagringskontot för den virtuella datorns disk är ett premiumlagringskonto.
Installera SQL Iaas-agenten
SQL Server virtuella datorer har stöd för automatiserade hanteringsfunktioner med SQL Server IaaS-agenttillägget. Om du vill SQL Server med tillägget kör du kommandot New-AzSqlVM när den virtuella datorn har skapats. Ange licenstypen för din virtuella SQL Server dator och välj mellan att betala per användning eller använda din egen licens 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:
- Automatiskt för alla aktuella och framtida virtuella datorer i en prenumeration
- Manuellt för en enskild virtuell dator
- Manuellt för flera virtuella datorer i grupp
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. Den förutsätter att du redan har ställt in Azure-prenumerationen för användning 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 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:
- Anslut till den virtuella datorn med RDP
- Konfigurera SQL Server i portalen för den virtuella datorn, inklusive:
- Konfigurera anslutning
- Anslut klienter och program till den nya SQL Server instansen