Azure SQL veritabanı 'nda tek bir veritabanını izlemek ve ölçeklendirmek için PowerShell 'i kullanmaUse PowerShell to monitor and scale a single database in Azure SQL Database

Uygulama hedefi: Azure SQL veritabanı

Bu PowerShell betiği örneği, tek bir veritabanının performans ölçümlerini izler, daha yüksek bir işlem boyutuna ölçeklendirir ve performans ölçümlerinden birinde bir uyarı kuralı oluşturur.This PowerShell script example monitors the performance metrics of a single database, scales it to a higher compute size, and creates an alert rule on one of the performance metrics.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Not

Bu makale Azure Az PowerShell modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the Azure Az PowerShell module. Az PowerShell modülü, Azure ile etkileşim kurmak için önerilen PowerShell modülüdür.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin.To get started with the Az PowerShell module, see Install Azure PowerShell. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell’i barındırır.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell’in önceden yüklenmiş komutlarını kullanabilirsiniz.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell’i başlatmak için:To start Azure Cloud Shell:

SeçenekOption Örnek/BağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Deneyin seçeneği belirlendiğinde, kod otomatik olarak Cloud Shell’e kopyalanmaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için Deneyin örneği
Cloud Shell’i tarayıcınızda açmak için https://shell.azure.com bölümüne gidin veya Cloud Shell’i Başlat düğmesini seçin.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Cloud Shell’i yeni bir pencerede başlatmaLaunch Cloud Shell in a new window
Azure portalın sağ üst köşesindeki menü çubuğunda yer alan Cloud Shell düğmesini seçin.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Azure Cloud Shell’de bu makaledeki kodu çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell’i başlatın.Start Cloud Shell.

  2. Kodu kopyalamak için kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.

  3. Windows ve Linux sisteminde Ctrl+Shift+V tuşlarını kullanarak veya macOS’de Cmd+Shift+V tuşlarını kullanarak kodu Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Kodu çalıştırmak için Enter tuşuna basın.Select Enter to run the code.

PowerShell 'i yerel olarak yükleyip kullanmayı tercih ederseniz bu öğretici az PowerShell 1.4.0 veya üstünü gerektirir.If you choose to install and use PowerShell locally, this tutorial requires Az PowerShell 1.4.0 or later. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme.If you need to upgrade, see Install Azure PowerShell module. PowerShell'i yerel olarak çalıştırıyorsanız Azure bağlantısı oluşturmak için Connect-AzAccount komutunu da çalıştırmanız gerekir.If you are running PowerShell locally, you also need to run Connect-AzAccount to create a connection with Azure.

Örnek betikSample script

# Connect-AzAccount
# The SubscriptionId in which to create these objects
$SubscriptionId = ''
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"
# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "mySampleDatabase"
# The ip address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"

# Set subscription 
Set-AzContext -SubscriptionId $subscriptionId 

# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location

# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
    -ServerName $serverName `
    -Location $location `
    -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))

# Create a server firewall rule that allows access from the specified IP range
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
    -ServerName $serverName `
    -FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp

# Create a blank database with an S0 performance level
$database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
    -ServerName $serverName `
    -DatabaseName $databaseName `
    -RequestedServiceObjectiveName "S0" `
    -SampleName "AdventureWorksLT"

# Monitor the DTU consumption on the imported database in 5 minute intervals
$MonitorParameters = @{
  ResourceId = "/subscriptions/$($(Get-AzContext).Subscription.Id)/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName/databases/$databaseName"
  TimeGrain = [TimeSpan]::Parse("00:05:00")
  MetricNames = "dtu_consumption_percent"
}
(Get-AzMetric @MonitorParameters -DetailedOutput).MetricValues

# Scale the database performance to Standard S1
$database = Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
    -ServerName $servername `
    -DatabaseName $databasename `
    -Edition "Standard" `
    -RequestedServiceObjectiveName "S1"

# Set an alert rule to automatically monitor DTU in the future
Add-AzMetricAlertRule -ResourceGroup $resourceGroupName `
    -Name "MySampleAlertRule" `
    -Location $location `
    -TargetResourceId "/subscriptions/$($(Get-AzContext).Subscription.Id)/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName/databases/$databaseName" `
    -MetricName "dtu_consumption_percent" `
    -Operator "GreaterThan" `
    -Threshold 90 `
    -WindowSize $([TimeSpan]::Parse("00:05:00")) `
    -TimeAggregationOperator "Average" `
    -Action $(New-AzAlertRuleEmail -SendToServiceOwner)

# Clean up deployment 
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName

Not

Ölçümlerin tam listesi için bkz. ölçüm destekleniyor.For a full list of metrics, see metrics supported.

İpucu

Veritabanı işlemlerinin durumunu almak için Get-azsqldatabaseactivity komutunu kullanın ve bir veritabanı güncelleştirme işlemini iptal etmek için stop-azsqldatabaseactivity kullanın.Use Get-AzSqlDatabaseActivity to get the status of database operations and use Stop-AzSqlDatabaseActivity to cancel a database update operation.

Dağıtımı temizlemeClean up deployment

Kaynak grubunu ve onunla ilişkili tüm kaynakları kaldırmak için aşağıdaki komutu kullanın.Use the following command to remove the resource group and all resources associated with it.

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Betik açıklamasıScript explanation

Bu betik aşağıdaki komutları kullanır.This script uses the following commands. Tablodaki her komut, komuta özgü belgelere yönlendirir.Each command in the table links to command-specific documentation.

KomutCommand NotlarNotes
New-AzResourceGroupNew-AzResourceGroup Tüm kaynakların depolandığı bir kaynak grubu oluşturur.Creates a resource group in which all resources are stored.
New-AzSqlServerNew-AzSqlServer Tek bir veritabanı veya elastik havuz barındıran bir sunucu oluşturur.Creates a server that hosts a single database or elastic pool.
Get-AzMetricGet-AzMetric Veritabanı için boyut kullanım bilgilerini gösterir.Shows the size usage information for the database.
Set-AzSqlDatabaseSet-AzSqlDatabase Veritabanı özelliklerini güncelleştirir veya veritabanlarını elastik havuzların içine veya dışına taşıdıkça.Updates database properties or moves the database into, out of, or between elastic pools.
Add-AzMetricAlertRuleAdd-AzMetricAlertRule Gelecekte ölçümleri otomatik olarak izlemek için bir uyarı kuralı ayarlar.Sets an alert rule to automatically monitor metrics in the future.
Remove-AzResourceGroupRemove-AzResourceGroup Bir kaynak grubunu tüm iç içe geçmiş kaynaklar dahil siler.Deletes a resource group including all nested resources.

Sonraki adımlarNext steps

Azure PowerShell hakkında daha fazla bilgi için bkz. Azure PowerShell belgeleri.For more information on Azure PowerShell, see Azure PowerShell documentation.

Ek PowerShell betiği örnekleri, Azure PowerShell betiklerinebulunabilir.Additional PowerShell script samples can be found in Azure PowerShell scripts.