Otomatik ayarlama için e-posta bildirimleri

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Azure SQL Veritabanı ayarlama önerileri, Azure SQL Veritabanı otomatik ayarlama ile oluşturulur. Bu çözüm, her veritabanı için dizin oluşturma, dizin silme ve sorgu yürütme planlarının iyileştirilmesiyle ilgili özelleştirilmiş ayarlama önerileri sağlayan veritabanlarının iş yüklerini sürekli izler ve analiz eder.

Azure SQL Veritabanı otomatik ayarlama önerileri Azure portalı, REST API çağrılarıyla veya T-SQL ve PowerShell komutları kullanılarak alınır. Bu makale, otomatik ayarlama önerilerini almak için Bir PowerShell betiği kullanmayı temel alır.

Dekont

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.

Önemli

PowerShell Azure Resource Manager modülü Azure SQL Veritabanı tarafından hala desteklenmektedir, ancak gelecekteki tüm geliştirmeler Az.Sql modülüne yöneliktir. Bu cmdlet'ler için bkz . AzureRM.Sql. Az modülündeki ve AzureRm modüllerindeki komutların bağımsız değişkenleri önemli ölçüde aynıdır.

Otomatik ayarlama önerileri için e-posta bildirimlerini otomatikleştirme

Aşağıdaki çözüm, otomatik ayarlama önerileri içeren e-posta bildirimlerinin gönderilmesini otomatikleştirir. Açıklanan çözüm, Azure Otomasyonu kullanarak ayarlama önerilerini almaya yönelik bir PowerShell betiğinin otomatikleştirilmesinden ve Microsoft Power Automate kullanarak e-posta teslim işinin zamanlanmasından oluşur.

Azure Otomasyonu hesabı oluşturma

Azure Otomasyonu kullanmak için ilk adım bir otomasyon hesabı oluşturmak ve bunu PowerShell betiğinin yürütülmesi için kullanılacak Azure kaynaklarıyla yapılandırmaktır. Azure Otomasyonu ve özellikleri hakkında daha fazla bilgi edinmek için bkz. Azure otomasyonu ile çalışmaya başlama.

otomasyon uygulamasını Azure Market seçme ve yapılandırma yöntemiyle Azure Otomasyonu Hesabı oluşturmak için şu adımları izleyin:

  1. Azure portalında oturum açın.

  2. Sol üst köşedeki "+ Kaynak oluştur"a tıklayın.

  3. "Otomasyon" için arama yapın (enter tuşuna basın).

  4. Arama sonuçlarında Otomasyon uygulamasına tıklayın.

    Adding Azure automation

  5. "Otomasyon Hesabı Oluştur" bölmesinin içine girdikten sonra "Oluştur"a tıklayın.

  6. Gerekli bilgileri doldurun: Bu otomasyon hesabı için bir ad girin, PowerShell betiği yürütmesi için kullanılacak Azure abonelik kimliğinizi ve Azure kaynaklarınızı seçin.

  7. "Azure Farklı Çalıştır hesabı oluştur" seçeneği için, PowerShell betiğinin altında çalıştığı hesap türünü Azure Otomasyonu yardımıyla yapılandırmak için Evet'i seçin. Hesap türleri hakkında daha fazla bilgi edinmek için bkz . Farklı Çalıştır hesabı.

  8. Oluştur'a tıklayarak otomasyon hesabının oluşturulmasını sonlandırın.

Bahşiş

Otomasyon uygulamasını oluştururken girdiğiniz şekilde Azure Otomasyonu hesap adınızı, abonelik kimliğinizi ve kaynaklarınızı (not defterine kopyalayıp yapıştırma gibi) kaydedin. Bu bilgiye daha sonra ihtiyacınız olacak.

Aynı otomasyonu oluşturmak istediğiniz birkaç Azure aboneliğiniz varsa, bu işlemi diğer abonelikleriniz için tekrarlamanız gerekir.

Azure Otomasyonu modüllerini güncelleştirme

Otomatik ayarlama önerisini almak için PowerShell betiği, Azure Modülü sürüm 4 ve üzeri için gerekli olan Get-AzResource ve Get-AzSqlDatabaseRecommendedAction komutlarını kullanır.

Azure Otomasyonu runbook oluşturma

Sonraki adım, Azure Otomasyonu içinde ayarlama önerilerinin alınması için PowerShell betiğinin bulunduğu bir Runbook oluşturmaktır.

Yeni bir Azure Otomasyonu runbook oluşturmak için şu adımları izleyin:

  1. Önceki adımda oluşturduğunuz Azure Otomasyonu hesabına erişin.

  2. Otomasyon hesabı bölmesine girdikten sonra sol taraftaki "Runbook'lar" menü öğesine tıklayarak PowerShell betiğiyle yeni bir Azure Otomasyonu runbook oluşturun. Otomasyon runbook'ları oluşturma hakkında daha fazla bilgi edinmek için bkz . Yeni runbook oluşturma.

  3. Yeni bir runbook eklemek için "+Runbook ekle" menü seçeneğine tıklayın ve ardından "Hızlı oluştur – Yeni runbook oluştur" seçeneğine tıklayın.

  4. Runbook bölmesinde runbook'unuzun adını yazın (bu örnekte "AutomaticTuningEmailAutomation" kullanılır), runbook türünü PowerShell olarak seçin ve amacını açıklamak için bu runbook'un açıklamasını yazın.

  5. Yeni runbook oluşturmayı tamamlamak için Oluştur düğmesine tıklayın.

    Add Azure automation runbook

Oluşturulan runbook'un içine bir PowerShell betiği yüklemek için şu adımları izleyin:

  1. "PowerShell Runbook'unu Düzenle" bölmesinin içinde, menü ağacında "RUNBOOKS" öğesini seçin ve runbook'unuzun adını görene kadar görünümü genişletin (bu örnekte "AutomaticTuningEmailAutomation"). Bu runbook'u seçin.
  2. "PowerShell Runbook'unu Düzenle" (1 numarasından başlayarak) ilk satırında aşağıdaki PowerShell betik kodunu kopyalayıp yapıştırın. Bu PowerShell betiği, kullanmaya başlamanız için olduğu gibi sağlanır. Betiği gereksinimlerinizi karşılayacak şekilde değiştirin.

Sağlanan PowerShell betiğinin üst bilgisinde değerini Azure abonelik kimliğiniz ile değiştirmeniz <SUBSCRIPTION_ID_WITH_DATABASES> gerekir. Azure abonelik kimliğinizi almayı öğrenmek için bkz . Azure Abonelik GUID'nizi alma.

Birkaç abonelik söz konusu olduğunda, bunları komut dosyasının üst bilgisindeki "$subscriptions" özelliğine virgülle ayrılmış olarak ekleyebilirsiniz.

# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.

# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")

# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()

# Loop through all subscriptions
foreach($subscriptionId in $subscriptions) {
    Select-AzSubscription -SubscriptionId $subscriptionId
    $rgs = Get-AzResourceGroup

    # Loop through all resource groups
    foreach($rg in $rgs) {
        $rgname = $rg.ResourceGroupName;

        # Loop through all resource types
        foreach($resourceType in $resourceTypes) {
            $resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType

            # Loop through all databases
            # Extract resource groups, servers and databases
            foreach ($resource in $resources) {
                $resourceId = $resource.ResourceId
                if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
                    $ResourceGroupName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
                    $ServerName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
                    $DatabaseName = $matches['content']
                } else {
                    continue
                }

                # Skip if master
                if ($DatabaseName -eq "master") {
                    continue
                }

                # Loop through all automatic tuning recommendation types
                foreach ($advisor in $advisors) {
                    $recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName  -DatabaseName $DatabaseName -AdvisorName $advisor
                    foreach ($r in $recs) {
                        if ($r.State.CurrentValue -eq "Active") {
                            $object = New-Object -TypeName PSObject
                            $object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
                            $object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
                            $object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
                            $object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
                            $object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
                            $results += $object
                        }
                    }
                }
            }
        }
    }
}

# Format and output results for the email
$table = $results | Format-List
Write-Output $table

Betiği kaydetmek için sağ üst köşedeki "Kaydet" düğmesine tıklayın. Betikle memnun olduğunuzda, bu runbook'u yayımlamak için "Yayımla" düğmesine tıklayın.

Ana runbook bölmesinde, betiği test etmek için "Başlat" düğmesine tıklamayı seçebilirsiniz. Yürütülen betiğin sonuçlarını görüntülemek için "Çıktı"ya tıklayın. Bu çıkış, e-postanızın içeriği olacaktır. Betiğin örnek çıktısı aşağıdaki ekran görüntüsünde görülebilir.

Run view automatic tuning recommendations with Azure Automation

PowerShell betiğini gereksinimlerinize göre özelleştirerek içeriği ayarladığınızdan emin olun.

Yukarıdaki adımlarla, otomatik ayarlama önerilerini almaya yönelik PowerShell betiği Azure Otomasyonu yüklenir. Sonraki adım, e-posta teslim işini otomatikleştirmek ve zamanlamaktır.

Microsoft Power Automate ile e-posta işlerini otomatikleştirme

Çözümü tamamlamak için, son adım olarak Microsoft Power Automate'te üç eylemden (işler) oluşan bir otomasyon akışı oluşturun:

  • "Azure Otomasyonu - İş oluştur" – Azure Otomasyonu runbook'unun içinde otomatik ayarlama önerilerini almak için PowerShell betiğini yürütmek için kullanılır.
  • Yürütülen PowerShell betiğinden çıktı almak için kullanılan "Azure Otomasyonu - İş çıktısını al".
  • "Office 365 Outlook – E-posta gönder" – e-posta göndermek için kullanılır. E-postalar, akışı oluşturan kişinin iş veya okul hesabı kullanılarak gönderilir.

Microsoft Power Automate özellikleri hakkında daha fazla bilgi edinmek için bkz . Microsoft Power Automate'i kullanmaya başlama.

Bu adımın önkoşulu bir Microsoft Power Automate hesabına kaydolmak ve oturum açmaktır. Çözümün içine girdikten sonra yeni bir akış ayarlamak için şu adımları izleyin:

  1. "Akışlarım" menü öğesine erişin.
  2. Akışlarım'ın içinde sayfanın üst kısmındaki "+Boştan oluştur" bağlantısını seçin.
  3. Sayfanın en altındaki "Yüzlerce bağlayıcı ve tetikleyici ara" bağlantısına tıklayın.
  4. Arama alanına "recurrence" yazın ve e-posta teslim işini çalıştırılacak şekilde zamanlamak için arama sonuçlarından "Zamanla - Yinelenme" öğesini seçin.
  5. Sıklık alanındaki Yinelenme bölmesinde, her Dakika, Saat, Gün, Hafta vb. otomatik e-posta gönderme gibi bu akışın yürütülecek zamanlama sıklığını seçin.

Sonraki adım, yeni oluşturulan yinelenen akışa üç iş (oluşturma, çıktı alma ve e-posta gönderme) eklemektir. Akışa gerekli işleri eklemeyi gerçekleştirmek için şu adımları izleyin:

  1. Ayarlama önerilerini almak için PowerShell betiğini yürütmek için eylem oluşturma

    • "+Yeni adım"ı ve ardından Yinelenme akışı bölmesinde "Eylem ekle"yi seçin.
    • Arama alanına "otomasyon" yazın ve arama sonuçlarından "Azure Otomasyonu – İş oluştur" seçeneğini belirleyin.
    • İş oluştur bölmesinde iş özelliklerini yapılandırın. Bu yapılandırma için daha önce Otomasyon Hesabı bölmesine kaydedilen Azure abonelik kimliğinizin, Kaynak Grubunuzun ve Otomasyon Hesabınızın ayrıntılarına ihtiyacınız olacaktır. Bu bölümde sağlanan seçenekler hakkında daha fazla bilgi edinmek için bkz. Azure Otomasyonu - İş Oluşturma.
    • "Akışı kaydet" seçeneğine tıklayarak bu eylemi oluşturmayı tamamlayın.
  2. Yürütülen PowerShell betiğinden çıktı almak için eylem oluşturma

    • "+Yeni adım"ı ve ardından Yinelenme akışı bölmesinde "Eylem ekle" seçeneğini belirleyin
    • Arama alanına "otomasyon" yazın ve arama sonuçlarından "Azure Otomasyonu – İş çıktısını al" öğesini seçin. Bu bölümde sağlanan seçenekler hakkında daha fazla bilgi edinmek için bkz. Azure Otomasyonu – İş çıktısı alma.
    • Gerekli alanları doldurun (önceki işi oluşturmaya benzer şekilde) - Azure abonelik kimliğinizi, Kaynak Grubunuzu ve Otomasyon Hesabınızı doldurun (Otomasyon Hesabı bölmesine girilmiş gibi).
    • "Dinamik içerik" menüsünün gösterilmesi için "İş Kimliği" alanının içine tıklayın. Bu menünün içinden "İş Kimliği" seçeneğini belirleyin.
    • "Akışı kaydet" seçeneğine tıklayarak bu eylemi oluşturmayı tamamlayın.
  3. Office 365 tümleştirmesini kullanarak e-posta göndermek için eylem oluşturma

    • "+Yeni adım"ı ve ardından Yinelenme akışı bölmesinde "Eylem ekle"yi seçin.
    • Arama alanına "e-posta gönder" yazın ve arama sonuçlarından "Office 365 Outlook – E-posta gönder" seçeneğini belirleyin.
    • "Son" alanına, bildirim e-postasını göndermeniz gereken e-posta adresini yazın.
    • E-postanızın konusunun "Konu" alanına yazın, örneğin "Otomatik ayarlama önerileri e-posta bildirimi".
    • "Dinamik içerik" menüsünün gösterilmesi için "Gövde" alanının içine tıklayın. Bu menünün içindeki "İş çıktısı al" bölümünde "İçerik" öğesini seçin.
    • "Akışı kaydet" seçeneğine tıklayarak bu eylemi oluşturmayı tamamlayın.

Bahşiş

Farklı alıcılara otomatik e-posta göndermek için ayrı akışlar oluşturun. Bu ek akışlarda, "Alıcı" alanındaki alıcı e-posta adresini ve "Konu" alanındaki e-posta konusu satırını değiştirin. Özelleştirilmiş PowerShell betikleriyle (Azure abonelik kimliği değişikliği gibi) Azure Otomasyonu'de yeni runbook'lar oluşturmak, ayrı abonelikler için otomatik ayarlama önerilerinde ayrı alıcılara e-posta gönderme gibi otomatik senaryoların daha fazla özelleştirmesini sağlar.

Yukarıdaki işlem, e-posta teslim işi iş akışını yapılandırmak için gereken adımları tamamlar. Oluşturulan üç eylemden oluşan akışın tamamı aşağıdaki görüntüde gösterilmiştir.

View automatic tuning email notifications flow

Akışı test etmek için akış bölmesinin sağ üst köşesindeki "Şimdi Çalıştır"a tıklayın.

Gönderilen e-posta bildirimlerinin başarısını gösteren otomatik işleri çalıştırma istatistikleri Flow analiz bölmesinden görülebilir.

Running flow for automatic tuning email notifications

Akış analizi bölmesi, iş yürütmelerinin başarısını izlemek ve sorun giderme için gerekirse yararlıdır. Sorun giderme durumunda, Azure Otomasyonu uygulaması aracılığıyla erişilebilen PowerShell betik yürütme günlüğünü de incelemek isteyebilirsiniz.

Otomatik e-postanın son çıkışı, bu çözümü derleyip çalıştırdıktan sonra alınan aşağıdaki e-postaya benzer:

Sample email output from automatic tuning email notifications

PowerShell betiğini ayarlayarak, otomatik e-postanın çıkışını ve biçimlendirmesini ihtiyaçlarınıza göre ayarlayabilirsiniz.

Çözümü, özel senaryolarınıza bağlı olarak belirli bir ayarlama olayına göre e-posta bildirimleri oluşturmak ve birden çok abonelik veya veritabanı için birden çok alıcı için daha fazla özelleştirebilirsiniz.

Sonraki adımlar

  • Otomatik ayarlamanın veritabanı performansını artırmanıza nasıl yardımcı olabileceği hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı'de otomatik ayarlama.
  • Azure SQL Veritabanı'de iş yükünüzü yönetmek üzere otomatik ayarlamayı etkinleştirmek için bkz. Otomatik ayarlamayı etkinleştirme.
  • Otomatik ayarlama önerilerini el ile gözden geçirmek ve uygulamak için bkz . Performans önerilerini bulma ve uygulama.