Azure Sanal Azure PowerShell'da SQL Server sağlamayı kullanma

AŞAĞıDAKILER IÇIN GEÇERLIDIR: SQL Server VM'de sanal makine

Bu kılavuz, Azure Sanal Makineler'de (VM) SQL Server PowerShell kullanma seçeneklerini kapsar. Varsayılan değerlere dayanan Azure PowerShell kolaylaştırılmış bir örnek için vm SQL hızlı Azure PowerShell bakın.

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

Not

Bu makalede, Azure ile etkileşim kurmak 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 açı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şturma sürecini basitleştirmek için bir dizi değişken tanımlayarak başlayabilirsiniz. Parametre değerlerini istediğiniz gibi değiştirebilirsiniz, ancak sağlanan değerleri değiştirirken ad uzunlukları 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ölgelerini ve kaynak grubunu tanımlayın.

Bu değişkenleri başlatmak için istediğiniz şekilde değişiklik ve ardından bu cmdlet'leri çalıştırın.

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

Depolama özellikleri

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

Istediğiniz şekilde değişiklik yapın ve ardından 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 kullanılması önerilir.

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

Ağ özellikleri

Sanal makinede 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 adresleri aralığı
  • Alt ağ için IP adresi aralığı
  • Genel etki alanı adı etiketi

Bu değişkenleri başlatmak için istediğiniz şekilde değiştirmeyin ve ardından 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:

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

Bu değişkenleri başlatmak için istediğiniz şekilde değiştirmeyin ve ardından bu cmdlet'i çalıştırın.

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

Bir SQL Server seçin

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

  1. İlk olarak, komutuyla SQL Server tüm görüntü tekliflerini Get-AzVMImageOffer listele. Bu komut, yalnızca PowerShell ile yüklen Azure portal eski görüntülerin yanı sıra, Azure portal geçerli görüntüleri listeler:

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    
  2. Bu öğreticide, 2017'de SQL Server belirtmek için aşağıdaki değişkenleri Windows Server 2016.

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

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Bu öğreticide, SQL Server 2017 Developer edition ( SQLDEV )kullanın. Developer sürümü test ve geliştirme için ücretsiz olarak lisanslanır ve yalnızca VM'yi çalıştırmanın maliyeti için ücret ödersiniz.

    $Sku = "SQLDEV"
    

Kaynak grubu oluşturma

Yeni Resource Manager modeliyle, ilk oluşturmalısınız nesnesi kaynak grubu olur. 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ğunu değişkenleri belirtin.

Yeni kaynak grubularınızı 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 veri ve günlük dosyaları için SQL Server kaynakları gerektirir. Kolaylık olması için her ikisi için de tek bir disk oluşturabilirsiniz. Daha sonra Add-Azure Disk cmdlet'ini kullanarak ek diskler ekleyebilir ve SQL Server günlük dosyalarını ayrılmış disklere ebilirsiniz. Yeni kaynak grubu içinde standart bir depolama hesabı oluşturmak için New-AzStorageAccount cmdlet'ini kullanın. Depolama hesabı adı, depolama SKU'su adı ve konumu için daha önce başlatmış olduğunu 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.
  • Bir sanal ağın tanımlanmış en az bir alt ağı olmalıdır.
  • Bir ağ arabirimi, genel veya özel bir IP adresiyle tanımlanmalıdır.

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

Başlangıç olarak sanal ağınız için bir alt ağ yapılandırması oluşturma. Bu öğreticide, New-AzVirtualNetworkSubnetConfig cmdlet'ini kullanarak varsayılan bir alt ağ oluşturun. Alt ağ adı ve adres ön eki için daha önce başlatmış olduğunu 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ının 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 sanal ağın yeni kaynak grubu içinde oluşturun. Ad, konum ve adres ön eki için daha önce başlatmış olduğunu değişkenleri belirtin. Önceki adımda tanımlandığı alt ağ yapılandırmasını kullanın.

Sanal ağımı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 grubu içinde 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ğunu değişkenleri belirtin.

Not

Bu cmdlet'i kullanarak genel IP adresinin ek özelliklerini tanımlayabilirsiniz, ancak bu, bu ilk öğreticinin kapsamının dışındadır. Ayrıca özel adres veya statik adrese sahip bir 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'yi güvenli hale SQL Server için bir ağ güvenlik grubu oluşturun.

  1. İlk olarak, RDP bağlantılarına izin vermek için 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. TCP bağlantı noktası 1433'te trafiğe izin veren bir ağ güvenlik grubu kuralı yapılandırma. Bunu yapmak, bağlantıların SQL Server üzerinden bağlantı kurmalarını sağlar.

    $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ğ arabirimini oluşturmak için hazır olursanız. Yeni kaynak grubu içinde 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ımlama.
  • İşletim sistemi diskini belirtin.

VM nesnesini oluşturma

Başlangıç olarak sanal makine boyutunu belirtin. 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ğunu 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 bilgileri için ad ve parolayı tutmak için bir kimlik bilgisi nesnesi oluşturun

Sanal makinenin işletim sistemi özelliklerini ayarlaymadan ö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. PowerShell kimlik bilgisi isteği penceresine VM'nin yerel yönetici adını ve parolasını yazmanız gerekir.

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

Sanal makinenin işletim sistemi özelliklerini ayarlama

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

  • İşletim sisteminin türünü yeni bir Windows.
  • Sanal makine aracının yüklü olması gerekir.
  • cmdlet'inin otomatik güncelleştirmeyi olanaklı olduğunu belirtin.
  • Daha önce sanal makine adı, bilgisayar adı ve kimlik bilgisi için başlatmış olduğunu 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ımlandığı 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'nin diski için blob depolama konumunu daha önce tanımlandığı 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 makinenin işletim sistemi disk özelliklerini ayarlayın.

  • Sanal makine için işletim sisteminin bir görüntüden gelecek olduğunu belirtin.
  • Önbelleğe almayı salt okunur olarak ayarlayın (SQL Server diske yüklü olduğundan).
  • VM adı ve işletim sistemi diski için daha önce başlatmış olduğunu 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 öğreticide, en son SQL Server 2016 CTP görüntüsünü kullanın. Bu görüntüyü daha önce tanımlandığı 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ı tamamlayana kadar sanal makineyi oluşturabilirsiniz. Tanımlandığı 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 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 Iaas Aracısı'nı yükleme

SQL Server sanal makineler, IaaSAracı Uzantısı ile SQL Server yönetim özelliklerini destekler. Sanal makinenizi SQL Server makine oluşturulduktan sonra New-AzSqlVM komutunu çalıştırın. SQL Server VM'niz için lisans türünü belirterek, Azure Hibrit Avantajı aracılığıyla -you-go-pay-you-go veya kendi lisansını getir arasında seçimAzure Hibrit Avantajı. Lisanslama hakkında daha fazla bilgi için bkz. lisanslama modeli.

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

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

VM'yi durdurma veya kaldırma

VM'nin sürekli olarak çalışmasına ihtiyacınız yoksa, kullanımda olmayan vm'yi durdurarak gereksiz ücretlerden kaçınılması gerekir. 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 yapmak sanal makineyi de kalıcı olarak siler, bu nedenle bu komutu özenli bir şekilde kullanın.

Örnek betik

Aşağıdaki betik, bu öğretici için tam PowerShell betiği içerir. Bağlan-AzAccount ve Select-AzSubscription komutlarıyla kullanmak için Azure aboneliğini ayarlamış olduğunu varsayın.

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

Sonraki adımlar

Sanal makine oluşturulduktan sonra şunları kullanabilirsiniz: