Bagikan melalui


Menggunakan Azure PowerShell untuk membuat SQL Server di Azure VM

Berlaku untuk:SQL Server di Azure VM

Panduan ini mencakup opsi untuk menggunakan PowerShell untuk menyediakan SQL Server di Azure Virtual Machine (VM). Untuk contoh Azure PowerShell yang disederhanakan yang bergantung pada nilai default, lihat mulai cepat SQL Server di Azure VM PowerShell.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Mengonfigurasi langganan Anda

  1. Buka PowerShell dan buat akses ke akun Azure Anda dengan menjalankan perintah Connect-AzAccount.

    Connect-AzAccount
    
  2. Saat diminta, masukkan info masuk Anda. Gunakan email dan kata sandi yang sama dengan yang Anda gunakan untuk masuk ke portal Microsoft Azure.

Menentukan variabel citra

Untuk menggunakan kembali nilai dan menyederhanakan pembuatan skrip, mulailah dengan menentukan sejumlah variabel. Ubah nilai parameter seperti yang Anda inginkan, tetapi ketahuilah tentang pembatasan penamaan yang terkait dengan panjang nama dan karakter khusus saat memodifikasi nilai yang disediakan.

Dimungkinkan untuk menyebarkan gambar SQL Server yang lebih lama yang tidak tersedia di portal Azure dengan menggunakan PowerShell. Untuk menampilkan semua gambar yang tersedia dengan menggunakan PowerShell, gunakan perintah berikut:

$Location = "<location>"
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'

Lokasi dan grup sumber daya

Tentukan wilayah data dan grup sumber daya tempat Anda ingin membuat sumber daya komputer virtual lainnya.

Modifikasi seperti yang Anda inginkan lalu jalankan cmdlet ini untuk menginisialisasi variabel ini.

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

Properti penyimpanan

Tentukan akun penyimpanan dan jenis penyimpanan yang akan digunakan oleh komputer virtual.

Modifikasi sesuai keinginan Anda lalu jalankan cmdlet ini untuk menginisialisasi variabel tersebut. Sebaiknya gunakan SSD premium untuk beban kerja produksi.

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

Properti jaringan

Tentukan properti yang akan digunakan oleh jaringan di dalam komputer virtual.

  • Antarmuka jaringan
  • Metode alokasi TCP/IP
  • Nama jaringan virtual
  • Nama subnet virtual
  • Rentang alamat IP untuk jaringan virtual
  • Rentang alamat IP untuk subnet
  • Label nama domain publik

Modifikasi seperti yang Anda inginkan lalu jalankan cmdlet ini untuk menginisialisasi variabel tersebut.

$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

Properti komputer virtual

Tentukan properti berikut ini:

  • Nama komputer virtual
  • Nama komputer
  • Ukuran komputer virtual
  • Nama disk sistem operasi untuk komputer virtual

Modifikasi seperti yang Anda inginkan lalu jalankan cmdlet ini untuk menginisialisasi variabel tersebut.

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

Memilih citra SQL Server

Gunakan variabel berikut untuk menentukan citra SQL Server yang akan digunakan untuk komputer virtual.

  1. Pertama, cantumkan semua penawaran citra SQL Server dengan perintah Get-AzVMImageOffer. Perintah ini mencantumkan citra saat ini yang tersedia di portal Microsoft Azure dan juga citra lama yang hanya dapat dipasang dengan PowerShell:

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

    Catatan

    SQL Server 2008 dan SQL Server 2008 R2 tidak memiliki dukungan yang diperpanjang dan tidak lagi tersedia dari Marketplace Azure.

  2. Untuk tutorial ini, gunakan variabel berikut untuk menentukan SQL Server 2022 di Windows Server 2022.

    $OfferName = "SQL2022-WS2022"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Selanjutnya, cantumkan edisi yang tersedia untuk penawaran Anda.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Untuk tutorial ini, gunakan SQL Server 2022 edisi Pengembang (SQLDEV). Edisi Pengembang dilisensikan secara bebas untuk pengujian dan pengembangan, dan Anda hanya membayar biaya menjalankan komputer virtual.

    $Sku = "SQLDEV"
    

Buat grup sumber daya

Dengan model penyebaran Resource Manager, objek pertama yang Anda buat adalah grup sumber daya. Gunakan cmdlet New-AzResourceGroup untuk membuat grup sumber daya Azure dan sumber dayanya. Tentukan variabel yang sebelumnya Anda inisialisasi untuk nama dan lokasi grup sumber daya.

Jalankan cmdlet ini untuk membuat grup sumber daya baru Anda.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

Buat akun penyimpanan

Komputer virtual memerlukan sumber daya penyimpanan untuk disk sistem operasi dan untuk data SQL Server serta file log. Untuk kesederhanaan, Anda akan membuat satu disk untuk keduanya. Anda dapat melampirkan disk tambahan nanti menggunakan cmdlet Add-Azure Disk untuk menempatkan data SQL Server Anda dan file log pada disk khusus. Gunakan cmdlet New-AzStorageAccount untuk membuat akun penyimpanan standar di grup sumber daya baru Anda. Tentukan variabel yang sebelumnya Anda inisialisasi untuk nama akun penyimpanan, nama penyimpanan SKU, dan lokasi.

Jalankan cmdlet ini untuk membuat akun penyimpanan baru Anda.

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

Tip

Pembuatan akun penyimpanan memerlukan waktu beberapa menit.

Membuat sumber daya jaringan

Komputer virtual memerlukan sejumlah sumber daya jaringan untuk konektivitas jaringan.

  • Setiap komputer virtual membutuhkan jaringan virtual.
  • Jaringan virtual harus memiliki setidaknya satu subnet yang ditentukan.
  • Antarmuka jaringan harus ditentukan dengan alamat IP publik atau privat.

Membuat konfigurasi subnet jaringan virtual

Mulailah dengan membuat konfigurasi subnet untuk jaringan virtual Anda. Untuk tutorial ini, buat subnet default menggunakan cmdlet New-AzVirtualNetworkSubnetConfig. Tentukan variabel yang sebelumnya Anda inisialisasi untuk awalan nama subnet dan alamat.

Catatan

Anda dapat menentukan properti tambahan dari konfigurasi subnet jaringan virtual menggunakan cmdlet ini, tetapi itu di luar cakupan tutorial ini.

Jalankan cmdlet ini untuk membuat konfigurasi subnet virtual Anda.

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

Membuat jaringan virtual

Selanjutnya, buat jaringan virtual Anda di grup sumber daya baru Anda menggunakan cmdlet New-AzVirtualNetwork. Tentukan variabel yang sebelumnya Anda inisialisasi untuk awalan nama, lokasi, dan alamat. Gunakan konfigurasi subnet yang Anda tentukan di langkah sebelumnya.

Jalankan cmdlet ini untuk membuat jaringan virtual Anda.

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

Membuat alamat IP publik

Sekarang setelah jaringan virtual ditentukan, Anda harus mengonfigurasi alamat IP untuk konektivitas ke komputer virtual. Untuk tutorial ini, buat alamat IP publik menggunakan alamat IP dinamis untuk mendukung konektivitas Internet. Gunakan cmdlet New-AzPublicIpAddress untuk membuat alamat IP publik di grup sumber daya baru Anda. Tentukan variabel yang sebelumnya Anda inisialisasi untuk label nama, lokasi, metode alokasi, dan nama domain DNS.

Catatan

Anda dapat menentukan properti tambahan dari alamat IP publik menggunakan cmdlet ini, tetapi itu di luar cakupan tutorial awal ini. Anda juga dapat membuat alamat privat atau alamat dengan alamat statis, tetapi itu juga di luar cakupan tutorial ini.

Jalankan cmdlet ini untuk membuat alamat IP publik Anda.

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

Membuat kelompok keamanan jaringan

Untuk mengamankan lalu lintas komputer virtual dan SQL Server, buat grup keamanan jaringan.

  1. Pertama, buat aturan grup keamanan jaringan untuk desktop jarak jauh (RDP) untuk mengizinkan koneksi RDP.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. Konfigurasikan aturan grup keamanan jaringan yang memungkinkan lalu lintas pada port TCP 1433. Melakukan hal ini memungkinkan koneksi ke SQL Server melalui internet.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Buat kelompok keamanan jaringan.

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

Membuat antarmuka jaringan

Sekarang Anda siap untuk membuat antarmuka jaringan untuk komputer virtual Anda. Gunakan cmdlet New-AzNetworkInterface untuk membuat antarmuka jaringan di grup sumber daya baru Anda. Tentukan nama, lokasi, subnet, dan alamat IP publik yang sebelumnya ditentukan.

Jalankan cmdlet ini untuk membuat antarmuka jaringan Anda.

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

Mengonfigurasi objek komputer virtual

Kini, setelah penyimpanan dan sumber daya jaringan ditentukan, Anda siap untuk menentukan sumber daya komputasi untuk komputer virtual.

  • Tentukan ukuran komputer virtual dan berbagai properti sistem operasi.
  • Tentukan antarmuka jaringan yang sebelumnya Anda buat.
  • Tentukan penyimpanan blob.
  • Tentukan disk sistem operasi.

Membuat objek komputer virtual

Mulailah dengan menentukan ukuran komputer virtual. Untuk tutorial ini, tentukan DS13. Gunakan cmdlet New-AzVMConfig untuk membuat objek komputer virtual yang dapat dikonfigurasi. Tentukan variabel yang sebelumnya Anda inisialisasi untuk nama dan ukuran.

Jalankan cmdlet ini untuk membuat objek komputer virtual.

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

Membuat objek kredensial untuk menahan nama dan kata sandi untuk info masuk administrator lokal

Sebelum Anda dapat mengatur properti sistem operasi untuk komputer virtual, Anda harus menyediakan info masuk untuk akun administrator lokal sebagai string aman. Untuk mencapai hal ini, gunakan cmdlet Get-Credential.

Jalankan cmdlet berikut. Anda harus mengetikkan nama dan kata sandi administrator lokal komputer virtual ke dalam jendela permintaan info masuk PowerShell.

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

Mengatur properti sistem operasi untuk komputer virtual

Sekarang Anda siap untuk mengatur properti sistem operasi komputer virtual dengan cmdlet Set-AzVMOperatingSystem.

  • Atur jenis sistem operasi sebagai Windows.
  • Wajibkan pemasangan agen komputer virtual.
  • Tentukan bahwa cmdlet mengaktifkan pembaruan otomatis.
  • Tentukan variabel yang sebelumnya Anda inisialisasi untuk nama komputer virtual, nama komputer, dan info masuk.

Jalankan cmdlet ini untuk mengatur properti sistem operasi untuk komputer virtual Anda.

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

Menambahkan antarmuka jaringan ke komputer virtual

Selanjutnya, gunakan cmdlet Add-AzVMNetworkInterface untuk menambahkan antarmuka jaringan menggunakan variabel yang Anda tentukan sebelumnya.

Jalankan cmdlet ini untuk mengatur antarmuka jaringan untuk komputer virtual Anda.

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

Atur lokasi penyimpanan blob untuk disk yang akan digunakan oleh komputer virtual

Selanjutnya, atur lokasi penyimpanan blob untuk disk komputer virtual dengan variabel yang Anda tentukan sebelumnya.

Jalankan cmdlet ini untuk mengatur lokasi penyimpanan blob.

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

Mengatur properti disk sistem operasi untuk komputer virtual

Selanjutnya, atur properti disk sistem operasi untuk komputer virtual menggunakan cmdlet Set-AzVMOSDisk.

  • Tentukan bahwa sistem operasi untuk komputer virtual akan berasal dari citra.
  • Atur penembolokan untuk dibaca saja (karena SQL Server sedang dipasang pada disk yang sama).
  • Tentukan variabel yang sebelumnya Anda inisialisasi untuk nama komputer virtual dan disk sistem operasi.

Jalankan cmdlet ini untuk mengatur properti disk sistem operasi untuk komputer virtual Anda.

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

Tentukan citra platform untuk komputer virtual

Langkah konfigurasi terakhir adalah menentukan citra platform untuk komputer virtual Anda. Untuk tutorial ini, gunakan citra CTP SQL Server 2016 terbaru. Gunakan cmdlet Set-AzVMSourceImage untuk menggunakan citra ini dengan variabel yang Anda tentukan sebelumnya.

Jalankan cmdlet ini untuk menentukan citra platform untuk komputer virtual Anda.

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

Membuat komputer virtual SQL

Setelah menyelesaikan langkah-langkah konfigurasi, Anda siap untuk membuat komputer virtual. Gunakan cmdlet New-AzVM untuk membuat komputer virtual menggunakan variabel yang Anda tentukan.

Tip

Membuat VM dapat memakan waktu beberapa menit.

Jalankan cmdlet ini untuk membuat komputer virtual Anda.

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

Komputer virtual dibuat.

Catatan

Jika Anda mendapatkan kesalahan tentang diagnostik boot, Anda bisa mengabaikannya. Akun penyimpanan standar dibuat untuk diagnostik boot karena akun penyimpanan yang ditentukan untuk disk komputer virtual adalah akun penyimpanan premium.

Instal ekstensi SQL IaaS Agent

Komputer virtual SQL Server mendukung fitur manajemen otomatis dengan Ekstensi Agen infrastruktur sebagai layanan SQL Server. Untuk mendaftarkan SQL Server Anda dengan ekstensi jalankan perintah New-AzSqlVM setelah komputer virtual dibuat. Tentukan jenis lisensi untuk komputer virtual SQL Server Anda, pilih antara bayar sesuai permintaan atau bawa lisensi Anda sendiri melalui Azure Hybrid Benefit. Untuk informasi selengkapnya tentang lisensi, lihat model lisensi.

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

Ada tiga cara untuk mendaftar dengan ekstensi:

Menghentikan atau menghapus komputer virtual

Jika Anda tidak memerlukan komputer virtual untuk berjalan terus menerus, Anda dapat menghindari biaya yang tidak perlu dengan menghentikannya saat tidak digunakan. Perintah berikut ini menghentikan komputer virtual tetapi membuatnya tersedia untuk digunakan di masa mendatang.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Anda juga dapat menghapus semua sumber daya yang terkait dengan komputer virtual secara permanen dengan perintah Remove-AzResourceGroup. Melakukannya secara permanen menghapus komputer virtual juga, jadi gunakan perintah ini dengan hati-hati.

Contoh skrip

Skrip berikut berisi skrip PowerShell lengkap untuk tutorial ini. Ini mengasumsikan bahwa Anda telah menyiapkan langganan Azure untuk digunakan dengan perintah Connect-AzAccount dan 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 Agent Extension, and choose the license type
New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB> 

Langkah berikutnya

Setelah komputer virtual dibuat, Anda dapat: