Przewodnik po tworzeniu maszyny wirtualnej z programem SQL Server przy użyciu programu PowerShell
Dotyczy: program SQL Server na maszynie wirtualnej platformy Azure
W tym przewodniku opisano opcje tworzenia programu SQL Server na maszynie wirtualnej platformy Azure przy użyciu programu PowerShell. Aby uzyskać usprawniony przykład programu Azure PowerShell, który opiera się na wartościach domyślnych, zobacz przewodnik Szybki start programu SQL Server na maszynie wirtualnej platformy Azure lub skrypt kompleksowego, zobacz Tworzenie maszyny wirtualnej z programem SQL Server za pomocą skryptu programu PowerShell.
Wymagania wstępne
Aby ukończyć ten przewodnik, należy dysponować następującymi elementami:
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Najnowsza wersja usługi Azure PowerShell
Uwaga
W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Definiowanie zmiennych
Aby ponownie użyć wartości i uprościć tworzenie skryptu, zacznij od zdefiniowania wielu zmiennych. Zmień wartości parametrów zgodnie z potrzebami, ale pamiętaj o ograniczeniach nazewnictwa związanych z długościami nazw i znakami specjalnymi podczas modyfikowania podanych wartości.
Zacznij od zdefiniowania parametrów, które mają być używane w całym skrygcie, takich jak lokalizacja, nazwa grupy zasobów, obraz programu SQL Server i konto magazynu, którego chcesz użyć, a także właściwości sieci i maszyny wirtualnej.
Lokalizacja i grupa zasobów
Zdefiniuj region danych, grupę zasobów i subskrypcję, w której chcesz utworzyć maszynę wirtualną z programem SQL Server i skojarzone zasoby.
Zmodyfikuj tak, jak chcesz, a następnie uruchom te polecenia cmdlet, aby zainicjować te zmienne.
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
Właściwości magazynu
Zdefiniuj konto magazynu i typ magazynu, który ma być używany przez maszynę wirtualną.
Zmodyfikuj zgodnie z potrzebami, a następnie uruchom następujące polecenie cmdlet, aby zainicjować te zmienne. Zalecamy używanie dysków SSD w warstwie Premium dla obciążeń produkcyjnych.
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
Uwaga
Nazwa konta magazynu musi mieć długość od 3 do 24 znaków i używać tylko cyfr i małych liter, dlatego upewnij się, że nazwa grupy zasobów nie ma żadnych znaków specjalnych lub zmodyfikuj nazwę konta magazynu, aby użyć innej nazwy niż $ResourceGroupName.
Właściwości sieci
Zdefiniuj właściwości, które mają być używane przez sieć na maszynie wirtualnej.
- Interfejs sieciowy
- Metoda alokacji TCP/IP
- Nazwa sieci wirtualnej
- Nazwa podsieci wirtualnej
- Zakres adresów IP dla sieci wirtualnej
- Zakres adresów IP dla podsieci
- Etykieta nazwy domeny publicznej
Zmodyfikuj tak, jak chcesz, a następnie uruchom to polecenie cmdlet, aby zainicjować te zmienne.
$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
Właściwości maszyny wirtualnej
Zdefiniuj następujące właściwości:
- Virtual machine name
- Nazwa komputera
- Rozmiar maszyny wirtualnej
- Nazwa dysku systemu operacyjnego dla maszyny wirtualnej
Zmodyfikuj tak, jak chcesz, a następnie uruchom to polecenie cmdlet, aby zainicjować te zmienne.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Wybieranie obrazu programu SQL Server
Istnieje możliwość wdrożenia starszego obrazu programu SQL Server, który nie jest dostępny w witrynie Azure Portal przy użyciu programu PowerShell.
Użyj następujących zmiennych, aby zdefiniować obraz programu SQL Server do użycia dla maszyny wirtualnej.
Wyświetl listę wszystkich ofert obrazów programu SQL Server za pomocą polecenia Get-AzVMImageOffer , aby wyświetlić listę bieżących dostępnych obrazów w witrynie Azure Portal, a także starsze obrazy, które można wdrożyć tylko za pomocą programu PowerShell:
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
Uwaga
Programy SQL Server 2008 i SQL Server 2008 R2 nie są objęte rozszerzoną pomocą techniczną i nie są już dostępne w witrynie Azure Marketplace.
Wyświetl listę dostępnych wersji oferty za pomocą polecenia Get-AzVMImageSku.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
W tym samouczku użyj programu SQL Server 2022 Developer Edition (SQLDEV-GEN2) w systemie Windows Server 2022. Wersja Developer jest bezpłatnie licencjonowana na testowanie i programowanie i płacisz tylko za koszt uruchamiania maszyny wirtualnej:
$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)
Tworzenie grupy zasobów
Otwórz program PowerShell i ustanów dostęp do konta platformy Azure, uruchamiając polecenie Connect-AzAccount i ustawiając kontekst subskrypcji za pomocą polecenia Set-AzContext. Po wyświetleniu monitu wprowadź swoje dane uwierzytelniające. Użyj tego samego adresu e-mail i hasła, którego używasz do logowania w witrynie Azure Portal.
Po ustanowieniu kontekstu subskrypcji pierwszym tworzonym obiektem jest grupa zasobów. Użyj polecenia Connect-AzAccount, aby nawiązać połączenie z platformą Azure, i ustaw kontekst subskrypcji za pomocą polecenia Set-AzContext. Użyj polecenia cmdlet New-AzResourceGroup, aby utworzyć grupę zasobów platformy Azure i jej zasoby. Określ zmienne, które wcześniej zainicjowano dla nazwy i lokalizacji grupy zasobów.
Uruchom to polecenie cmdlet, aby nawiązać połączenie z platformą Azure, ustanowić kontekst subskrypcji i utworzyć nową grupę zasobów:
# 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
Tworzenie konta magazynu
Maszyna wirtualna wymaga zasobów magazynu dla dysku systemu operacyjnego oraz plików dziennika i danych programu SQL Server. Dla uproszczenia utworzysz jeden dysk dla obu tych elementów. Dodatkowe dyski można później dołączyć przy użyciu polecenia cmdlet Add-Azure Disk , aby umieścić dane i pliki dziennika programu SQL Server na dedykowanych dyskach. Użyj polecenia cmdlet New-AzStorageAccount, aby utworzyć standardowe konto magazynu w nowej grupie zasobów. Określ zmienne, które wcześniej zainicjowano dla nazwy konta magazynu, nazwy jednostki SKU magazynu i lokalizacji.
Uruchom to polecenie cmdlet, aby utworzyć nowe konto magazynu:
# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
Napiwek
Utworzenie konta magazynu może potrwać kilka minut.
Tworzenie zasobów sieciowych
Maszyna wirtualna wymaga wielu zasobów sieciowych na potrzeby łączności sieciowej.
- Każda maszyna wirtualna wymaga sieci wirtualnej.
- Sieć wirtualna musi mieć zdefiniowaną co najmniej jedną podsieć.
- Interfejs sieciowy musi być zdefiniowany przy użyciu publicznego lub prywatnego adresu IP.
Tworzenie konfiguracji podsieci sieci wirtualnej
Zacznij od utworzenia konfiguracji podsieci dla sieci wirtualnej. Na potrzeby tego samouczka utwórz domyślną podsieć przy użyciu polecenia cmdlet New-AzVirtualNetworkSubnetConfig . Określ zmienne, które wcześniej zainicjowano dla nazwy podsieci i prefiksu adresu.
Uwaga
Możesz zdefiniować dodatkowe właściwości konfiguracji podsieci sieci wirtualnej przy użyciu tego polecenia cmdlet, ale wykracza poza zakres tego samouczka.
Uruchom to polecenie cmdlet, aby utworzyć konfigurację podsieci wirtualnej.
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
Tworzenie sieci wirtualnej
Następnie utwórz sieć wirtualną w nowej grupie zasobów przy użyciu polecenia cmdlet New-AzVirtualNetwork . Określ zmienne, które wcześniej zainicjowano dla prefiksu nazwy, lokalizacji i adresu. Użyj konfiguracji podsieci zdefiniowanej w poprzednim kroku.
Uruchom to polecenie cmdlet, aby utworzyć sieć wirtualną:
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Tworzenie publicznego adresu IP
Po zdefiniowaniu sieci wirtualnej należy skonfigurować adres IP w celu nawiązania połączenia z maszyną wirtualną. Na potrzeby tego samouczka utwórz publiczny adres IP przy użyciu dynamicznego adresowania IP w celu obsługi łączności internetowej. Użyj polecenia cmdlet New-AzPublicIpAddress, aby utworzyć publiczny adres IP w nowej grupie zasobów. Określ zmienne, które wcześniej zainicjowano dla nazwy, lokalizacji, metody alokacji i etykiety nazwy domeny DNS.
Uwaga
Możesz zdefiniować dodatkowe właściwości publicznego adresu IP przy użyciu tego polecenia cmdlet, ale wykracza to poza zakres tego samouczka początkowego. Możesz również utworzyć adres prywatny lub adres ze statycznym adresem, ale wykracza to również poza zakres tego samouczka.
Uruchom to polecenie cmdlet, aby utworzyć publiczny adres IP.
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Tworzenie sieciowej grupy zabezpieczeń
Aby zabezpieczyć ruch maszyny wirtualnej i programu SQL Server, utwórz sieciową grupę zabezpieczeń.
Utwórz dwie reguły sieciowej grupy zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityRuleConfig, reguły dla pulpitu zdalnego (RDP) zezwalającą na połączenia RDP i regułę zezwalającą na ruch na porcie TCP 1433. Umożliwia to nawiązywanie połączeń z programem SQL Server przez Internet.
# 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
Utwórz sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup.
# Create a network security group $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName ` -Location $Location -Name $NsgName ` -SecurityRules $NsgRuleRDP,$NsgRuleSQL
Tworzenie interfejsu sieciowego
Teraz możesz utworzyć interfejs sieciowy dla maszyny wirtualnej. Użyj polecenia cmdlet New-AzNetworkInterface, aby utworzyć interfejs sieciowy w nowej grupie zasobów. Określ wcześniej zdefiniowaną nazwę, lokalizację, podsieć i publiczny adres IP.
Uruchom to polecenie cmdlet, aby utworzyć interfejs sieciowy.
# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
Konfigurowanie obiektu maszyny wirtualnej
Po zdefiniowaniu zasobów magazynu i sieci można zdefiniować zasoby obliczeniowe dla maszyny wirtualnej.
- Określ rozmiar maszyny wirtualnej i różne właściwości systemu operacyjnego.
- Określ interfejs sieciowy, który został wcześniej utworzony.
- Zdefiniuj magazyn obiektów blob.
- Określ dysk systemu operacyjnego.
Tworzenie maszyny wirtualnej z programem SQL Server
Aby utworzyć maszynę wirtualną z programem SQL Server, najpierw utwórz obiekt poświadczeń, a następnie utwórz maszynę wirtualną.
Utwórz obiekt poświadczeń do przechowywania nazwy i hasła dla poświadczeń administratora lokalnego
Aby można było ustawić właściwości systemu operacyjnego dla maszyny wirtualnej, należy podać poświadczenia dla konta administratora lokalnego jako bezpieczny ciąg. Aby to osiągnąć, użyj polecenia cmdlet Get-Credential .
Uruchom następujące polecenie cmdlet. Musisz wpisać nazwę i hasło administratora lokalnego maszyny wirtualnej w oknie żądania poświadczeń programu PowerShell.
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Definiowanie właściwości i tworzenie maszyny wirtualnej
Teraz możesz ustawić właściwości systemu operacyjnego maszyny wirtualnej za pomocą polecenia New-AzVMConfig, utworzyć maszynę wirtualną za pomocą polecenia New-AzVMM i użyć polecenia cmdlet Add-AzVMNetworkInterface , aby dodać interfejs sieciowy przy użyciu zdefiniowanej wcześniej zmiennej.
Przykładowy skrypt wykonuje następujące czynności:
- Wymagaj zainstalowania agenta maszyny wirtualnej.
- Określa, że polecenie cmdlet włącza automatyczną aktualizację.
- Określa zmienne, które wcześniej zainicjowano dla nazwy maszyny wirtualnej, nazwy komputera i poświadczeń.
Uruchom to polecenie cmdlet, aby ustawić właściwości systemu operacyjnego dla maszyny wirtualnej.
# 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
Maszyna wirtualna jest tworzona.
Uwaga
Jeśli wystąpi błąd dotyczący diagnostyki rozruchu, możesz go zignorować. Konto magazynu w warstwie Standardowa jest tworzone na potrzeby diagnostyki rozruchu, ponieważ określone konto magazynu dla dysku maszyny wirtualnej jest kontem magazynu w warstwie Premium.
Zainstaluj rozszerzenie agenta środowiska IaaS programu SQL.
Maszyny wirtualne programu SQL Server obsługują funkcje zautomatyzowanego zarządzania za pomocą rozszerzenia agenta IaaS programu SQL Server. Aby zarejestrować program SQL Server przy użyciu rozszerzenia, uruchom polecenie New-AzSqlVM po utworzeniu maszyny wirtualnej. Określ typ licencji dla maszyny wirtualnej z programem SQL Server, wybierając opcję z płatnością zgodnie z rzeczywistym użyciem (PAYG
), bring-your-own-license za pośrednictwem Korzyść użycia hybrydowego platformy Azure (), odzyskiwania po awarii (DR
AHUB
), aby aktywować bezpłatną licencję repliki odzyskiwania po awarii. Aby uzyskać więcej informacji na temat licencjonowania, zobacz Model licencjonowania.
Aby zarejestrować maszynę wirtualną programu SQL Server przy użyciu rozszerzenia agenta IaaS SQL, najpierw zarejestruj subskrypcję u dostawcy zasobów przy użyciu polecenia Register-AzResourceProvider, a następnie zarejestruj maszynę wirtualną programu SQL Server przy użyciu rozszerzenia agenta IaaS SQL przy użyciu polecenia New-AzSqlVM:
# 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
Istnieją trzy sposoby rejestrowania przy użyciu rozszerzenia:
- Automatycznie dla wszystkich bieżących i przyszłych maszyn wirtualnych w ramach subskrypcji
- Ręczne dla pojedynczej maszyny wirtualnej
- Ręczne w przypadku wielu maszyn wirtualnych zbiorczo
Zatrzymywanie lub usuwanie maszyny wirtualnej
Jeśli maszyna wirtualna nie musi działać w sposób ciągły, możesz uniknąć niepotrzebnych opłat, zatrzymując ją, gdy jest nieużywana. Następujące polecenie zatrzyma maszynę wirtualną, ale pozostawi ją dostępną do użycia w przyszłości.
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
Możesz również trwale usunąć wszystkie zasoby skojarzone z maszyną wirtualną, korzystając z polecenia Remove-AzResourceGroup. Spowoduje to również trwałe usunięcie maszyny wirtualnej, dlatego tego polecenia należy używać z rozwagą.
Pełny skrypt
Aby uzyskać pełny skrypt programu PowerShell, który zapewnia kompleksowe środowisko, zobacz Wdrażanie programu SQL Server na maszynie wirtualnej platformy Azure przy użyciu programu PowerShell.
Powiązana zawartość
Po utworzeniu maszyny wirtualnej można wykonać następujące czynności:
- Nawiązywanie połączenia z maszyną wirtualną przy użyciu protokołu RDP
- Skonfiguruj ustawienia programu SQL Server w portalu dla maszyny wirtualnej, w tym:
- Konfigurowanie łączności
- Łączenie klientów i aplikacji z nowym wystąpieniem programu SQL Server