Otomatik ayarlama için Email bildirimleri

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

Azure SQL Veritabanı ayarlama önerileri Azure SQL Veritabanı otomatik ayarlaması tarafından 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 görüntülenebilir, REST API çağrılarıyla veya T-SQL ve PowerShell komutları kullanılarak alınabilir. Bu makale, otomatik ayarlama önerilerini almak için PowerShell betiği kullanmayı temel alır.

Not

Bu makalede, Azure ile etkileşime yönelik ö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 almak için bir PowerShell betiğinin otomatik olarak yürütülmesinden 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öntemi aracılığıyla bir 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.

    Azure otomasyonu ekleme

  5. "Otomasyon Hesabı Oluştur" bölmesine 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.

İpucu

Otomasyon uygulamasını oluştururken Azure Otomasyonu hesap adınızı, abonelik kimliğinizi ve kaynaklarınızı (not defterine kopyalayıp yapıştırma gibi) tam olarak girdiğiniz şekilde 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 yinelemeniz 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 üzerinin gerekli olduğu 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ölmesinde 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 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.

    Azure otomasyonu runbook'u ekleme

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 sayısıyla başlayarak) ilk satırında aşağıdaki PowerShell betik kodunu kopyalayıp yapıştırın. Bu PowerShell betiği, çalışmaya 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 Aboneliği 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. Betikten 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.

Azure Otomasyonu ile otomatik ayarlama önerilerini görüntülemeyi çalıştırma

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ş) oluşan bir otomasyon akışı oluşturun:

  • "Azure Otomasyonu - İş oluştur" – Azure Otomasyonu runbook'unun içinde otomatik ayarlama önerilerini almak üzere PowerShell betiğini yürütmek için kullanılır.
  • "Azure Otomasyonu - İş çıktısı al" – yürütülen PowerShell betiğinden çıktı almak için kullanılır.
  • "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. E-posta teslim işini çalışacak şekilde zamanlamak için arama alanına "yinelenme" yazın ve arama sonuçlarından "Zamanlama - 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ölmesinin içinde "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 önceOtomasyon Hesabı bölmesine kaydedilen Azure abonelik kimliğiniz, Kaynak Grubu ve Otomasyon Hesabınızın ayrıntılarına ihtiyacınız olacaktır. Bu bölümdeki seçenekler hakkında daha fazla bilgi edinmek için bkz. Azure Otomasyonu - İş Oluşturma.
    • "Akışı kaydet"e 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ölmesinin içinde "Eylem ekle" seçeneğini belirleyin
    • Arama alanına "otomasyon" yazın ve arama sonuçlarından "Azure Otomasyonu – İş çıktısını al" seçeneğini belirleyin. 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) - 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"e 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ölmesinin içinde "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.
    • "Konu" alanına e-postanızın konusunu 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"i seçin.
    • "Akışı kaydet"e tıklayarak bu eylemi oluşturmayı tamamlayın.

İpucu

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 konu satırını değiştirin. Özelleştirilmiş PowerShell betikleriyle (örneğin Azure abonelik kimliğinin değiştirilmesiyle) 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ıda, e-posta teslim işi iş akışını yapılandırmak için gereken adımlar sonlandırılmıştır. Oluşturulan üç eylemden oluşan akışın tamamı aşağıdaki görüntüde gösterilmiştir.

Otomatik ayarlama e-posta bildirimleri akışını görüntüleme

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.

E-posta bildirimlerini otomatik ayarlama için akış çalıştırma

Flow analizi bölmesi, iş yürütmelerinin başarısını izlemede ve sorun giderme için gerekirse yardımcı olur. Sorun giderme durumunda, Azure Otomasyonu uygulamasından 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:

Otomatik ayarlama e-posta bildirimlerinden örnek e-posta çıkışı

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

Ö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ıya e-posta bildirimleri oluşturmak için çözümü daha da özelleştirebilirsiniz.

Sonraki adımlar