Freigeben über


Anleitung zum Erstellen einer SQL Server-VM mit PowerShell

Gilt für: VM mit SQL Server auf Azure

Dieser Leitfaden behandelt Optionen für die Verwendung von PowerShell zum Erstellen einer VM mit SQL Server auf Azure. Ein vereinfachtes Beispiel für Azure PowerShell mit Standardwerten finden Sie im Schnellstart zum Erstellen einer VM mit SQL Server auf Azure mit PowerShell. Ein End-to-End-Skript finden Sie unter Erstellen einer SQL Server-VM mit PowerShell-Skript.

Voraussetzungen

Für diese Anleitung benötigen Sie Folgendes:

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Aktuelle Version von Azure PowerShell

Hinweis

In diesem Artikel wird das Azure Az PowerShell-Modul verwendet. Dieses PowerShell-Modul wird für die Interaktion mit Azure empfohlen. Informationen zu den ersten Schritten mit dem Az PowerShell-Modul finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Definieren von Variablen

Beginnen Sie mit dem Definieren einer Reihe von Variablen, um Werte wiederzuverwenden und die Skripterstellung zu vereinfachen. Die Parameterwerte können nach Belieben geändert werden. Dabei müssen allerdings die Benennungskonventionen hinsichtlich Namenslänge und Sonderzeichen eingehalten werden.

Definieren Sie zunächst die Parameter, die im gesamten Skript verwendet werden sollen, z. B. den Standort, den Namen der Ressourcengruppe, das SQL Server-Image und das Speicherkonto, das Sie verwenden möchten, sowie die Netzwerk- und VM-Eigenschaften.

Ort und Ressourcengruppe

Definieren Sie den Datenbereich, die Ressourcengruppe und das Abonnement, in dem Sie Ihre SQL Server-VM und die zugehörigen Ressourcen erstellen möchten.

Ändern Sie die Werte nach Bedarf, und führen Sie diese Cmdlets aus, um die Variablen zu initialisieren.

$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"

Speichereigenschaften

Definieren Sie das Speicherkonto und die Art des Speichers für den virtuellen Computer.

Ändern Sie die Werte nach Bedarf, und führen Sie das folgende Cmdlet aus, um diese Variablen zu initialisieren. Für Produktionsworkloads werden SSD Premium-Datenträger empfohlen.

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

Hinweis

Der Name des Speicherkontos muss zwischen 3 und 24 Zeichen lang sein und darf nur Zahlen und Kleinbuchstaben enthalten. Stellen Sie daher sicher, dass der Name der Ressourcengruppe keine Sonderzeichen enthält, oder ändern Sie den Namen des Speicherkontos in einen anderen Namen als „$ResourceGroupName“.

Netzwerkeigenschaften

Definieren Sie die Eigenschaften, die vom Netzwerk auf dem virtuellen Computer verwendet werden sollen.

  • Netzwerkschnittstelle
  • TCP/IP-Zuordnungsmethode
  • Name des virtuellen Netzwerks
  • Name des virtuellen Subnetzes
  • Bereich von IP-Adressen für das virtuelle Netzwerk
  • Bereich von IP-Adressen für das Subnetz
  • Öffentliche Bezeichnung für die Domäne

Ändern Sie die Werte nach Bedarf, und führen Sie dieses Cmdlet aus, um die Variablen zu initialisieren.

$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

Eigenschaften für virtuelle Computer

Definieren Sie die folgenden Eigenschaften:

  • Name des virtuellen Computers
  • Computername
  • Größe des virtuellen Computers
  • Name für den Betriebssystemdatenträger des virtuellen Computers

Ändern Sie die Werte nach Bedarf, und führen Sie dieses Cmdlet aus, um die Variablen zu initialisieren.

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

Auswählen eines SQL Server-Images

Mithilfe von PowerShell kann ein älteres Image von SQL Server bereitgestellt werden, das im Azure-Portal nicht verfügbar ist.

Definieren Sie mithilfe der folgenden Variablen das SQL Server-Image, das für den virtuellen Computer verwendet werden soll.

  1. Listen Sie alle SQL Server-Imageangebote mit dem Befehl Get-AzVMImageOffer auf, um die aktuellen verfügbaren Images im Azure-Portal sowie ältere Images aufzulisten, die Sie nur mit PowerShell bereitstellen können:

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

    Hinweis

    Für SQL Server 2008 und SQL Server 2008 R2 steht kein erweiterter Support mehr zur Verfügung, und die Produkte sind nicht mehr im Azure Marketplace erhältlich.

  2. Listen Sie die verfügbaren Editionen für das Angebot mit Get-AzVMImageSku aus.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    

Verwenden Sie in diesem Tutorial SQL Server 2022 Developer Edition (SQLDEV-GEN2) unter Windows Server 2022. Die Developer Edition wird kostenlos für Test- und Entwicklungsumgebungen lizenziert – Sie bezahlen lediglich die Kosten der VM-Ausführung:

$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)

Erstellen einer Ressourcengruppe

Öffnen Sie PowerShell, und führen Sie den Befehl Connect-AzAccount aus, um den Zugriff auf Ihr Azure-Konto einzurichten. Legen Sie den Abonnementkontext mit Set-AzContext fest. Geben Sie bei Aufforderung Ihre Anmeldeinformationen ein. Verwenden Sie die E-Mail-Adresse und das Kennwort für die Anmeldung beim Azure-Portal.

Nachdem Sie den Abonnementkontext eingerichtet haben, erstellen Sie als erstes Objekt die Ressourcengruppe. Verwenden Sie den Befehl Connect-AzAccount, um eine Verbindung mit Azure herzustellen, und legen Sie Ihren Abonnementkontext mit Set-AzContext fest. Verwenden Sie das Cmdlet New-AzResourceGroup, um eine Azure-Ressourcengruppe und die zugehörigen Ressourcen zu erstellen. Geben Sie die zuvor initialisierten Variablen für den Namen der Ressourcengruppe und den Speicherort an.

Führen Sie das folgende Cmdlet aus, um eine Verbindung mit Azure herzustellen, den Abonnementkontext einzurichten und Ihre neue Ressourcengruppe zu erstellen:


# 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

Erstellen eines Speicherkontos

Der virtuelle Computer benötigt Speicherressourcen für den Betriebssystemdatenträger sowie für die SQL Server-Daten und -Protokolldateien. Der Einfachheit halber erstellen Sie für beides einen einzelnen Datenträger. Zusätzliche Datenträger können später mithilfe des Cmdlets Add-Azure Disk angefügt werden, um Ihre SQL Server-Daten und -Protokolldateien auf dedizierten Datenträgern zu platzieren. Erstellen Sie mit dem Cmdlet New-AzStorageAccount ein Standardspeicherkonto in der neuen Ressourcengruppe. Geben Sie die zuvor initialisierten Variablen für den Namen des Speicherkontos, den Namen der Speicher-SKU und den Speicherort an.

Führen Sie das folgende Cmdlet aus, um Ihr neues Speicherkonto zu erstellen:

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

Tipp

Das Erstellen des Speicherkontos kann einige Minuten dauern.

Erstellen von Netzwerkressourcen

Der virtuelle Computer benötigt für die Netzwerkkonnektivität eine Reihe von Netzwerkressourcen.

  • Jeder virtuelle Computer benötigt ein virtuelles Netzwerk.
  • Ein virtuelles Netzwerk muss über mindestens ein definiertes Subnetz verfügen.
  • Eine Netzwerkschnittstelle muss mit einer öffentlichen oder privaten IP-Adresse definiert werden.

Erstellen einer Subnetzkonfiguration für ein virtuelles Netzwerk

Erstellen Sie zunächst eine Subnetzkonfiguration für das virtuelle Netzwerk. Erstellen Sie für dieses Tutorial mithilfe des Cmdlets New-AzVirtualNetworkSubnetConfig ein Standardsubnetz. Geben Sie die zuvor initialisierten Variablen für den Subnetznamen und das Adresspräfix an.

Hinweis

Mit dem Cmdlet können auch weitere Eigenschaften der Subnetzkonfiguration für das virtuelle Netzwerk definiert werden. Darauf wird in diesem Tutorial jedoch nicht weiter eingegangen.

Führen Sie dieses Cmdlet aus, um die Konfiguration des virtuellen Subnetzes zu erstellen.

# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix

Erstellen eines virtuellen Netzwerks

Erstellen Sie als Nächstes mithilfe des Cmdlets New-AzVirtualNetwork Ihr virtuelles Netzwerk in der neuen Ressourcengruppe. Geben Sie die zuvor initialisierten Variablen für Name, Speicherort und Adresspräfix an. Verwenden Sie die Sie im vorherigen Schritt definierten Subnetzkonfiguration.

Führen Sie das folgende Cmdlet aus, um Ihr virtuelles Netzwerk zu erstellen:

# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

Erstellen der öffentlichen IP-Adresse

Nachdem Ihr virtuelles Netzwerk jetzt definiert ist, müssen sie eine IP-Adresse für die Verbindung mit dem virtuellen Computer konfigurieren. Für dieses Tutorial erstellen Sie eine öffentliche IP-Adresse mit dynamischer IP-Adressierung, um Internetverbindungen zu unterstützen. Erstellen Sie mit dem Cmdlet New-AzPublicIpAddress die öffentliche IP-Adresse in der neuen Ressourcengruppe. Geben Sie die zuvor initialisierten Variablen für Name, Speicherort, Zuordnungsmethode und DNS-Domänennamensbezeichnung an.

Hinweis

Mit dem Cmdlet können auch weitere Eigenschaften der öffentlichen IP-Adresse definiert werden. Darauf wird in diesem Einstiegstutorial jedoch nicht weiter eingegangen. Sie können auch eine private Adresse oder eine Adresse mit einer statischen Adresse erstellen, aber auch das wird in diesem Tutorial nicht behandelt.

Führen Sie dieses Cmdlet aus, um Ihre öffentliche IP-Adresse zu erstellen.

# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName

Erstellen der Netzwerksicherheitsgruppe

Erstellen Sie eine Netzwerksicherheitsgruppe, um den Datenverkehr von virtuellem Computer und SQL Server sicherzustellen.

  1. Erstellen Sie mithilfe von New-AzNetworkSecurityRuleConfig zwei Netzwerksicherheitsgruppenregeln: eine Regel für Remotedesktop (RDP), um RDP-Verbindungen zuzulassen, und eine Regel, die Datenverkehr an TCP-Port 1433 zulässt. So werden Verbindungen zu SQL Server über das Internet ermöglicht.

    # 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 Allow
    
  2. Erstellen Sie mittels New-AzNetworkSecurityGroup die Netzwerksicherheitsgruppe.

    # Create a network security group
    $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
    -Location $Location -Name $NsgName `
    -SecurityRules $NsgRuleRDP,$NsgRuleSQL
    

Erstellen der Netzwerkschnittstelle

Nun können Sie die Netzwerkschnittstelle für Ihren virtuellen Computer erstellen. Erstellen Sie mit dem Cmdlet New-AzNetworkInterface die Netzwerkschnittstelle in Ihrer neuen Ressourcengruppe. Geben Sie den Namen, Speicherort, das Subnetz und die öffentliche IP-Adresse an, die zuvor Sie definiert haben.

Führen Sie dieses Cmdlet aus, um Ihre Netzwerkschnittstelle zu erstellen.

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

Konfigurieren eines VM-Objekts

Nachdem die Speicher- und Netzwerkressourcen jetzt definiert sind, können Sie Computeressourcen für den virtuellen Computer definieren.

  • Geben Sie die Größe des virtuellen Computers und verschiedene Betriebssystemeigenschaften an.
  • Geben Sie die zuvor erstellte Netzwerkschnittstelle an.
  • Definieren Sie Blobspeicher.
  • Legen Sie den Betriebssystem-Datenträger fest.

Erstellen des virtuellen SQL Server-Computers

Zum Erstellen Ihrer SQL Server-VM erstellen Sie zuerst ein Anmeldeinformationsobjekt und dann die VM.

Erstellen eines Anmeldeinformationsobjekts zum Speichern von Name und Kennwort für die lokalen Administratoranmeldeinformationen

Bevor Sie die Betriebssystemeigenschaften für den virtuellen Computer festlegen können, müssen Sie die Anmeldeinformationen für das lokale Administratorkonto als sichere Zeichenfolge angeben. Verwenden Sie hierzu das Cmdlet Get-Credential.

Führen Sie das folgende Cmdlet aus. Sie müssen den Namen und das Kennwort des lokalen Administrators der VM im PowerShell-Anforderungsfenster für Anmeldeinformationen eingeben.

# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
   -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)

Definieren von Eigenschaften und Erstellen der VM

Jetzt können Sie die Betriebssystemeigenschaften des virtuellen Computers mit New-AzVMConfig festlegen, die VM mit New-AzVM erstellen und das Cmdlet Add-AzVMNetworkInterface verwenden, um die Netzwerkschnittstelle mithilfe der zuvor definierten Variablen hinzuzufügen.

Das Beispielskript führt Folgendes aus:

  • Legen Sie fest, dass der Agent für virtuelle Computer installiert werden muss.
  • Gibt an, dass das Cmdlet automatische Aktualisierungen ermöglicht.
  • Gibt die zuvor initialisierten Variablen für den Namen des virtuellen Computers, den Computernamen und die Anmeldeinformationen an.

Führen Sie dieses Cmdlet aus, um die Betriebssystemeigenschaften für Ihren virtuellen Computer festzulegen.

# 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

Der virtuelle Computer wird erstellt.

Hinweis

Wenn Sie eine Fehlermeldung bezüglich der Startdiagnose erhalten haben, können Sie sie ignorieren. Für die Startdiagnose wird ein Standardspeicherkonto erstellt, da es sich bei dem angegebenen Speicherkonto für den Datenträger des virtuellen Computers um ein Premium-Speicherkonto handelt.

Installieren der SQL-Iaas-Agenterweiterung

SQL Server-VMs unterstützen mit der Erweiterung für SQL Server-IaaS-Agent automatische Verwaltungsfunktionen. Führen Sie nach der Erstellung des virtuellen Computers den Befehl New-AzSqlVM aus, um Ihre SQL Server-VM mit der Erweiterung zu registrieren. Geben Sie den Lizenztyp für Ihre SQL Server-VM an, um die Lizenz für kostenlose DR-Replikate zu aktivieren. Sie können zwischen nutzungsbasierter Bezahlung (PAYG), Bring Your Own License über den Azure-Hybridvorteil (AHUB) und Notfallwiederherstellung (DR) wählen. Weitere Informationen zur Lizenzierung finden Sie unter Lizenzierungsmodell.

Um Ihre SQL Server-VM mit der SQL-IaaS-Agent-Erweiterung zu registrieren, registrieren Sie zuerst mithilfe von Register-AzResourceProvider Ihr Abonnement beim Ressourcenanbieter. Registrieren Sie dann mithilfe von New-AzSqlVM Ihre SQL Server-VM mit der SQL-IaaS-Agent-Erweiterung:


# 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

Es gibt drei Möglichkeiten, VMs mit der Erweiterung zu registrieren:

Beenden oder Entfernen eines virtuellen Computers

Wenn der virtuelle Computer nicht kontinuierlich ausgeführt werden muss, können Sie ihn beenden, wenn er nicht verwendet wird, um unnötige Kosten zu vermeiden. Mit dem folgenden Befehl wird der virtuelle Computer beendet, bleibt aber für eine spätere Verwendung verfügbar.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Mit dem Befehl Remove-AzResourceGroup können Sie alle Ressourcen, die der VM zugeordnet sind, endgültig entfernen. Dadurch wird auch der virtuelle Computer endgültig gelöscht. Seien Sie daher vorsichtig, wenn Sie diesen Befehl verwenden.

Vollständiges Skript

Ein vollständiges PowerShell-Skript, das eine End-to-End-Erfahrung bietet, finden Sie unter Bereitstellen einer VM mit SQL Server auf Azure mit PowerShell-.

Nach der Erstellung des virtuellen Computers haben Sie folgende Möglichkeiten: