Azure VM'de SQL Server oluşturmak için Azure PowerShell kullanma

Şunlar için geçerlidir:Azure VM'de SQL Server

Bu kılavuz, Azure Sanal Makinesi'ne (VM) SQL Server sağlamak için PowerShell kullanma seçeneklerini kapsar. Varsayılan değerlere dayalı, kolaylaştırılmış bir Azure PowerShell örneği için bkz . Azure VM'de SQL Server PowerShell hızlı başlangıcı.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Not

Bu makalede, Azure ile etkileşim için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Aboneliğinizi yapılandırma

  1. PowerShell'i açın ve Bağlan-AzAccount komutunu çalıştırarak Azure hesabınıza erişim sağlayın.

    Connect-AzAccount
    
  2. İstendiğinde, kimlik bilgilerinizi girin. Azure portala giriş yapmak için aynı e-posta adresini ve parolayı kullanın.

Görüntü değişkenlerini tanımlama

Değerleri yeniden kullanmak ve betik oluşturmayı basitleştirmek için bir dizi değişken tanımlayarak işe başlayın. Parametre değerlerini istediğiniz gibi değiştirin, ancak sağlanan değerleri değiştirirken ad uzunluklarıyla ve özel karakterlerle ilgili adlandırma kısıtlamalarına dikkat edin.

Konum ve kaynak grubu

Diğer VM kaynaklarını oluşturmak istediğiniz veri bölgesini ve kaynak grubunu tanımlayın.

İstediğiniz gibi değiştirin ve ardından bu değişkenleri başlatmak için bu cmdlet'leri çalıştırın.

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

Depolama özellikleri

Depolama hesabını ve sanal makine tarafından kullanılacak depolama türünü tanımlayın.

İstediğiniz gibi değiştirin ve bu değişkenleri başlatmak için aşağıdaki cmdlet'i çalıştırın. Üretim iş yükleri için premium SSD'ler kullanmanızı öneririz.

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

Ağ özellikleri

Sanal makinedeki ağ tarafından kullanılacak özellikleri tanımlayın.

  • Ağ arabirimi
  • TCP/IP ayırma yöntemi
  • Sanal ağın adı
  • Sanal alt ağ adı
  • Sanal ağ için IP adresi aralığı
  • Alt ağ için IP adresleri aralığı
  • Genel etki alanı adı etiketi

İstediğiniz gibi değiştirin ve ardından bu değişkenleri başlatmak için bu cmdlet'i çalıştırın.

$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

Sanal makine özellikleri

Aşağıdaki özellikleri tanımlayın:

  • Virtual machine name
  • Bilgisayar adı
  • Sanal makine boyutu
  • Sanal makine için işletim sistemi disk adı

İstediğiniz gibi değiştirin ve ardından bu değişkenleri başlatmak için bu cmdlet'i çalıştırın.

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

SQL Server görüntüsü seçme

Sanal makine için kullanılacak SQL Server görüntüsünü tanımlamak için aşağıdaki değişkenleri kullanın.

  1. İlk olarak, komutuyla tüm SQL Server görüntü tekliflerini listeleyin Get-AzVMImageOffer . Bu komut, Azure portalında kullanılabilen geçerli görüntüleri ve yalnızca PowerShell ile yüklenebilen eski görüntüleri listeler:

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

    Not

    SQL Server 2008 ve SQL Server 2008 R2 genişletilmiş desteğin dışındadır ve artık Azure Market kullanılamaz.

  2. Bu öğreticide, Windows Server 2022'de SQL Server 2022'yi belirtmek için aşağıdaki değişkenleri kullanın.

    $OfferName = "SQL2022-WS2022"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Ardından teklifiniz için kullanılabilir sürümleri listeleyin.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Bu öğretici için SQL Server 2022 Developer sürümünü (SQLDEV) kullanın. Developer sürümü, test ve geliştirme için serbestçe lisanslanır ve yalnızca VM'yi çalıştırma maliyeti için ödeme alırsınız.

    $Sku = "SQLDEV"
    

Kaynak grubu oluşturma

Resource Manager dağıtım modeliyle, oluşturduğunuz ilk nesne kaynak grubudur. Bir Azure kaynak grubu ve kaynaklarını oluşturmak için New-AzResourceGroup cmdlet'ini kullanın. Kaynak grubu adı ve konumu için daha önce başlatmış olduğunuz değişkenleri belirtin.

Yeni kaynak grubunuzu oluşturmak için bu cmdlet'i çalıştırın.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

Depolama hesabı oluşturma

Sanal makine, işletim sistemi diski ve SQL Server verileri ve günlük dosyaları için depolama kaynakları gerektirir. Kolaylık olması için her ikisi için de tek bir disk oluşturacaksınız. Sql Server verilerinizi ve günlük dosyalarınızı ayrılmış disklere yerleştirmek için Daha sonra Add-Azure Disk cmdlet'ini kullanarak ek diskler ekleyebilirsiniz. Yeni kaynak grubunuzda standart bir depolama hesabı oluşturmak için New-Az Depolama Account cmdlet'ini kullanın. Depolama hesabı adı, depolama SKU'su adı ve konumu için daha önce başlatmış olduğunuz değişkenleri belirtin.

Yeni depolama hesabınızı oluşturmak için bu cmdlet'i çalıştırın.

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

İpucu

Depolama hesabının oluşturulması birkaç dakika sürebilir.

Ağ kaynakları oluşturma

Sanal makine, ağ bağlantısı için bir dizi ağ kaynağı gerektirir.

  • Her sanal makine bir sanal ağ gerektirir.
  • Sanal ağda en az bir alt ağ tanımlanmış olmalıdır.
  • Ağ arabirimi genel veya özel IP adresiyle tanımlanmalıdır.

Sanal ağ alt ağı yapılandırması oluşturma

Sanal ağınız için bir alt ağ yapılandırması oluşturarak başlayın. Bu öğretici için New-AzVirtualNetworkSubnetConfig cmdlet'ini kullanarak varsayılan bir alt ağ oluşturun. Alt ağ adı ve adres ön eki için önceden başlatmış olduğunuz değişkenleri belirtin.

Not

Bu cmdlet'i kullanarak sanal ağ alt ağ yapılandırmasının ek özelliklerini tanımlayabilirsiniz, ancak bu, bu öğreticinin kapsamı dışındadır.

Sanal alt ağ yapılandırmanızı oluşturmak için bu cmdlet'i çalıştırın.

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

Sanal ağ oluşturma

Ardından New-AzVirtualNetwork cmdlet'ini kullanarak yeni kaynak grubunuzda sanal ağınızı oluşturun. Ad, konum ve adres ön eki için daha önce başlatmış olduğunuz değişkenleri belirtin. Önceki adımda tanımladığınız alt ağ yapılandırmasını kullanın.

Sanal ağınızı oluşturmak için bu cmdlet'i çalıştırın.

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

Genel IP adresini oluşturma

Sanal ağınız tanımlandığına göre, sanal makineye bağlantı için bir IP adresi yapılandırmanız gerekir. Bu öğreticide, İnternet bağlantısını desteklemek için dinamik IP adresi kullanarak bir genel IP adresi oluşturun. Yeni kaynak grubunuzda genel IP adresini oluşturmak için New-AzPublicIpAddress cmdlet'ini kullanın. Ad, konum, ayırma yöntemi ve DNS etki alanı adı etiketi için daha önce başlatmış olduğunuz değişkenleri belirtin.

Not

Bu cmdlet'i kullanarak genel IP adresinin ek özelliklerini tanımlayabilirsiniz, ancak bu, bu ilk öğreticinin kapsamı dışındadır. Ayrıca, statik adrese sahip bir özel adres veya adres de oluşturabilirsiniz, ancak bu da bu öğreticinin kapsamının dışındadır.

Genel IP adresinizi oluşturmak için bu cmdlet'i çalıştırın.

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

Ağ güvenlik grubunu oluşturma

VM ve SQL Server trafiğinin güvenliğini sağlamak için bir ağ güvenlik grubu oluşturun.

  1. İlk olarak, RDP bağlantılarına izin vermek üzere uzak masaüstü (RDP) için bir ağ güvenlik grubu kuralı oluşturun.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. 1433 numaralı TCP bağlantı noktasında trafiğe izin veren bir ağ güvenlik grubu kuralı yapılandırın. Bunun yapılması, SQL Server'a İnternet üzerinden bağlantı yapılmasına olanak tanır.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Ağ güvenlik grubunu oluşturun.

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

Ağ arabirimini oluşturma

Artık sanal makineniz için ağ arabirimi oluşturmaya hazırsınız. Yeni kaynak grubunuzda ağ arabirimi oluşturmak için New-AzNetworkInterface cmdlet'ini kullanın. Önceden tanımlanmış olan adı, konumu, alt ağı ve genel IP adresini belirtin.

Ağ arabiriminizi oluşturmak için bu cmdlet'i çalıştırın.

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

VM nesnesi yapılandırma

Artık depolama ve ağ kaynakları tanımlandığına göre, sanal makine için işlem kaynaklarını tanımlamaya hazırsınız.

  • Sanal makine boyutunu ve çeşitli işletim sistemi özelliklerini belirtin.
  • Daha önce oluşturduğunuz ağ arabirimini belirtin.
  • Blob depolamayı tanımlayın.
  • İşletim sistemi diskini belirtin.

VM nesnesini oluşturma

Sanal makine boyutunu belirterek başlayın. Bu öğretici için bir DS13 belirtin. Yapılandırılabilir bir sanal makine nesnesi oluşturmak için New-AzVMConfig cmdlet'ini kullanın. Ad ve boyut için daha önce başlatmış olduğunuz değişkenleri belirtin.

Sanal makine nesnesini oluşturmak için bu cmdlet'i çalıştırın.

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

Yerel yönetici kimlik bilgilerinin adını ve parolasını tutmak için bir kimlik bilgisi nesnesi oluşturma

Sanal makinenin işletim sistemi özelliklerini ayarlayabilmeniz için önce yerel yönetici hesabının kimlik bilgilerini güvenli bir dize olarak sağlamanız gerekir. Bunu yapmak için Get-Credential cmdlet'ini kullanın.

Aşağıdaki cmdlet'i çalıştırın. Vm'nin yerel yönetici adını ve parolasını PowerShell kimlik bilgisi isteği penceresine yazmanız gerekir.

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

Sanal makine için işletim sistemi özelliklerini ayarlama

Artık Set-AzVMOperatingSystem cmdlet'iyle sanal makinenin işletim sistemi özelliklerini ayarlamaya hazırsınız.

  • İşletim sistemi türünü Windows olarak ayarlayın.
  • Sanal makine aracısının yüklenmesini gerektir.
  • Cmdlet'in otomatik güncelleştirmeyi etkinleştirdiğini belirtin.
  • Sanal makine adı, bilgisayar adı ve kimlik bilgisi için daha önce başlatmış olduğunuz değişkenleri belirtin.

Sanal makinenizin işletim sistemi özelliklerini ayarlamak için bu cmdlet'i çalıştırın.

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

Ağ arabirimini sanal makineye ekleme

Ardından Add-AzVMNetworkInterface cmdlet'ini kullanarak daha önce tanımladığınız değişkeni kullanarak ağ arabirimini ekleyin.

Sanal makinenizin ağ arabirimini ayarlamak için bu cmdlet'i çalıştırın.

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

Sanal makine tarafından kullanılacak disk için blob depolama konumunu ayarlama

Ardından, vm diskinin blob depolama konumunu daha önce tanımladığınız değişkenlerle ayarlayın.

Blob depolama konumunu ayarlamak için bu cmdlet'i çalıştırın.

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

Sanal makine için işletim sistemi disk özelliklerini ayarlama

Ardından, Set-AzVMOSDisk cmdlet'ini kullanarak sanal makine için işletim sistemi disk özelliklerini ayarlayın.

  • Sanal makine için işletim sisteminin bir görüntüden geleceğini belirtin.
  • Önbelleğe almayı salt okunur olarak ayarlayın (çünkü SQL Server aynı diske yükleniyor).
  • VM adı ve işletim sistemi diski için daha önce başlatmış olduğunuz değişkenleri belirtin.

Sanal makinenizin işletim sistemi disk özelliklerini ayarlamak için bu cmdlet'i çalıştırın.

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

Sanal makine için platform görüntüsünü belirtme

Son yapılandırma adımı, sanal makineniz için platform görüntüsünü belirtmektir. Bu öğretici için en son SQL Server 2016 CTP görüntüsünü kullanın. Bu görüntüyü daha önce tanımladığınız değişkenlerle kullanmak için Set-AzVMSourceImage cmdlet'ini kullanın.

Sanal makinenizin platform görüntüsünü belirtmek için bu cmdlet'i çalıştırın.

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

SQL VM'sini oluşturma

Yapılandırma adımlarını tamamladığınıza göre artık sanal makineyi oluşturmaya hazırsınız. Tanımladığınız değişkenleri kullanarak sanal makineyi oluşturmak için New-AzVM cmdlet'ini kullanın.

İpucu

Sanal makine oluşturulması birkaç dakika sürebilir.

Sanal makinenizi oluşturmak için bu cmdlet'i çalıştırın.

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

Sanal makine oluşturulur.

Not

Önyükleme tanılaması hakkında bir hata alırsanız, bunu yoksayabilirsiniz. Sanal makinenin diski için belirtilen depolama hesabı bir premium depolama hesabı olduğundan önyükleme tanılaması için standart bir depolama hesabı oluşturulur.

SQL Server IaaS Aracısı uzantısını yükleyin

SQL Server sanal makineleri, SQL Server IaaS Aracısı Uzantısı ile otomatik yönetim özelliklerini destekler. SQL Server'ınızı uzantıya kaydetmek için, sanal makine oluşturulduktan sonra New-AzSqlVM komutunu çalıştırın. AZURE HIBRIT AVANTAJı aracılığıyla kullandıkça öde veya kendi lisansını getir arasında seçim yaparak SQL Server VM'nizin lisans türünü belirtin. Lisanslama hakkında daha fazla bilgi için bkz . lisanslama modeli.

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

Uzantıya kaydolmanın üç yolu vardır:

VM'yi durdurma veya kaldırma

VM'nin sürekli çalışması gerekmiyorsa, kullanılmadığında durdurarak gereksiz ücretlerden kaçınabilirsiniz. Aşağıdaki komut VM'yi durdurur ancak özelliği daha sonra kullanılmak üzere muhafaza eder.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Ayrıca Remove-AzResourceGroup komutuyla sanal makineyle ilişkili tüm kaynakları kalıcı olarak silebilirsiniz. Bunu yaptığınızda sanal makine de kalıcı olarak silinir, bu nedenle bu komutu dikkatli kullanın.

Örnek betik

Aşağıdaki betik, bu öğreticinin tam PowerShell betiğini içerir. Azure aboneliğini Bağlan-AzAccount ve Select-AzSubscription komutlarıyla kullanmak üzere önceden ayarladığınız varsayılır.

# 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> 

Sonraki adımlar

Sanal makine oluşturulduktan sonra şunları yapabilirsiniz: