تمكين إشعارات البريد الإلكتروني للضبط التلقائي

ينطبق على: قاعدة بيانات Azure SQL مثيل Azure SQL المُدار

يتم إنشاء توصيات ضبط Azure SQL Database بواسطة ضبط التلقائيلAzure SQL Database. يراقب هذا الحل باستمرار ويحلل أحمال العمل لقواعد البيانات مما يوفر توصيات ضبط مخصصة لكل قاعدة بيانات فردية متعلقة بإنشاء الفهرس وحذف الفهرس والتحسين من خطط تنفيذ الاستعلام.

يمكن عرض توصيات الضبط التلقائي لAzure SQL Database في مدخل Azure، أو استردادها بمكالمات REST API، أو باستخدام أوامر T-SQL وPowerShell. تستند هذه المقالة إلى استخدام برنامج نصي PowerShell لاسترداد توصيات الضبط التلقائي.

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

هام

لا تزال الوحدة النمطيةPowerShell Azure Resource Manager مدعومة من قبل قاعدة بيانات SQL Azure، ولكن جميع التطويرات المستقبلية تكون للوحدة النمطية Az.Sql. بالنسبة إلى أوامر cmdlets، راجع AzureRM.Sql. تتطابق وسائط الأوامر في الوحدة النمطية Az وفي الوحدات النمطية AzureRm بشكل كبير.

أتمتة إشعارات البريد الإلكتروني لتوصيات الضبط التلقائي

يؤتمت الحل التالي إرسال إشعارات البريد الإلكتروني التي تحتوي على توصيات الضبط التلقائي. يتكون الحل الموصوف من أتمتة تنفيذ برنامج نصي PowerShell لاسترداد توصيات الضبط باستخدام Azure Automation، وأتمتة جدولة وظيفة تسليم البريد الإلكتروني باستخدام Microsoft Power Automate.

إنشاء حساب Azure Automation

لاستخدام Azure Automation، فإن الخطوة الأولى هي إنشاء حساب أتمتة وتكوينه مع موارد Azure لاستخدامها لتنفيذ البرنامج النصي PowerShell. لمعرفة المزيد حول Azure Automation وقدراتها، راجع البدء باستخدام Azure Automation.

اتبع هذه الخطوات لإنشاء حساب Azure Automation من خلال طريقة تحديد وتكوين تطبيق التنفيذ التلقائي من سوق Azure:

  1. سجّل الدخول إلى مدخل Microsoft Azure.

  2. انقر على " + إنشاء مورد" في الزاوية اليسرى العليا.

  3. البحث عن "التنفيذ التلقائي" (اضغط إدخال).

  4. انقر على تطبيق التنفيذ التلقائي في نتائج البحث.

    Adding Azure automation

  5. بمجرد الدخول إلى جزء "إنشاء حساب التنفيذ التلقائي"، انقر على "إنشاء".

  6. ملء المعلومات المطلوبة: أدخل اسماً لحساب التنفيذ التلقائي هذا، وحدد معرف اشتراك Azure وموارد Azure لاستخدامها لتنفيذ البرنامج النصي PowerShell.

  7. بالنسبة إلى الخيار "إنشاء تشغيل Azure تشغيل كحساب"، حدد "نعم" لتكوين نوع الحساب الذي يشغّله البرنامج النصي PowerShell بمساعدة Azure Automation. لمعرفة المزيد حول أنواع الحسابات، راجع تشغيل كحساب.

  8. قم بإتمام إنشاء حساب التشغيل التلقائي بالنقر فوق "إنشاء" .

تلميح

سجل اسم حساب Azure Automation ومعرف الاشتراك، والموارد الخاصة بك (مثل نسخ اللصق إلى المفكرة) تماماً كما تم إدخالها أثناء إنشاء تطبيق التنفيذ التلقائي. ستحتاج إلى هذه المعلومات لاحقاً.

إذا كان لديك العديد من اشتراكات Azure التي ترغب في إنشاء نفس التنفيذ التلقائي لها، فستحتاج إلى تكرار هذه العملية للاشتراكات الأخرى.

تحديث الوحدات النمطية على Azure Automation

يستخدم البرنامج النصي PowerShell لاسترداد توصية الضبط التلقائي Get-AzResource وGet-AzSqlDatabaseRecommendedAction الأوامر اللازمة لإصدار Azure Module 4 وما يليه.

أنشئ دفتر تشغيل Azure Automation

الخطوة التالية هي إنشاء Runbook في Azure Automation داخل البرنامج النصي PowerShell لاسترداد توصيات توليف قائمة.

اتبع الخطوات التالية لإنشاء دفتر تشغيل Azure Automation جديد:

  1. الوصول إلى حساب Azure Automation الذي قمت بإنشائه في الخطوة السابقة.

  2. بمجرد وجود في جزء حساب التنفيذ التلقائي، انقر على عنصر القائمة "Runbooks" على الجانب الأيسر لإنشاء دفتر تشغيل Azure Automation جديد مع البرنامج النصي PowerShell. لمعرفة المزيد حول إنشاء دفاتر تشغيل تلقائية، راجع إنشاء دفتر تشغيل جديد.

  3. لإضافة دفتر تشغيل جديد، انقر على "+ إضافة دفتر تشغيل" من خيارات القائمة، ثم انقر على "الإنشاء السريع - إنشاء دفتر تشغيل جديد"..

  4. في جزء Runbook اكتب اسم دفتر التشغيل الخاص بك (لغرض هذا المثال، يُستخدم "AutomaticTuningEmailAutomation" )، حدد نوع دفتر التشغيل PowerShell واكتب وصفاً لهذا الكتاب لوصف الغرض منه.

  5. انقر على الزر "إنشاء" لإنهاء إنشاء دفتر تشغيل جديد.

    Add Azure automation runbook

اتبع الخطوات التالية لتحميل برنامج نصي PowerShell داخل دفتر التشغيل الذي تم إنشاؤه:

  1. داخل جزء "تحرير PowerShell Runbook" ، حدد "RUNBOOKS" على القائمة ووسّع طريقة العرض حتى ترى اسم دفتر التشغيل الخاص بك (في هذا المثال هو "AutomaticTuningEmailAutomation"). حدد دفتر التشغيل هذا.
  2. على السطر الأول من "تحرير PowerShell Runbook" (بدءاً من رقم 1)، انسخ والصق التعليمات البرمجية للبرنامج النصي PowerShell التالية. يتم توفير هذا البرنامج النصي PowerShell كما هو لتحصل على بدء التشغيل. تعديل البرنامج النصي إلى مجموعة احتياجاتك.

في عنوان البرنامج النصي PowerShell المتوفر تحتاج إلى استبدال <SUBSCRIPTION_ID_WITH_DATABASES> معرف الاشتراك Azure. لمعرفة كيفية استرداد معرف اشتراك Azure، راجع الحصول على المعرف الفريد العمومي للاشتراك Azure.

في حالة الاشتراكات المتعددة، يمكنك إضافتها كفواصل محددة إلى الخاصية "$Subscriptions" في عنوان البرنامج النصي.

# 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

انقر فوق الزر "حفظ" في الزاوية اليمنى العليا لحفظ البرنامج النصي. عندما تكون مقتنعاً بالبرنامج النصي، انقر فوق الزر "نشر" لنشر دفترة التشغيل.

في الجزء الرئيسي من دفتر التشغيل، يمكنك اختيار النقر على زر "ابدأ"لاختبار البرنامج النصي. انقر على "الإخراج" لعرض نتائج البرنامج النصي المنفذة. هذا الإخراج سيكون محتوى البريد الإلكتروني الخاص بك. يمكن رؤية إخراج العينة من البرنامج النصي في لقطة الشاشة التالية.

Run view automatic tuning recommendations with Azure Automation

تأكد من ضبط المحتوى عن طريق تخصيص البرنامج النصي PowerShell لاحتياجاتك.

مع الخطوات المذكورة أعلاه، يتم تحميل البرنامج النصي PowerShell لاسترداد توصيات الضبط التلقائي في Azure Automation. الخطوة التالية هي أتمتة جدولة وظيفة تسليم البريد الإلكتروني.

أتمتة وظائف البريد الإلكتروني مع Microsoft Power Automate

لإكمال الحل، كخطوة أخيرة، أنشئ تدفق التنفيذ التلقائي في Microsoft Power Automate الذي يتكون من ثلاثة إجراءات (وظائف):

  • يُستخدم "Azure Automation - إنشاء وظيفة" لتنفيذ برنامج نصي على PowerShell لاستعادة توصيات التشغيل التلقائي داخل دفتر تشغيل Azure Automation.
  • يُستخدم "Azure Automation - الحصول على مخرج وظيفة" لاسترجاع مخرج من البرنامج النصي المُنفّذ على PoweShell.
  • يُستخدم "Office 365 Outlook – أرسِل بريداً إلكترونياً" – لإرسال بريداً إلكترونياً. يتم إرسال رسائل البريد الإلكتروني باستخدام حساب العمل أو المدرسة للفرد الذي يقوم بإنشاء التدفق.

لمعرفة المزيد حول قدرات Microsoft Power Automate، راجع الشروع في استخدام Microsoft Power Automate.

شرط أساسي لهذه الخطوة هو الاشتراك في حساب Microsoft Power Automate وتسجيل الدخول. بمجرد الوجود داخل الحل، اتبع هذه الخطوات لإعداد تدفق جديد:

  1. الوصول إلى عنصر القائمة "تدفقاتي".
  2. داخل تدفقاتي، حدد ارتباط "+ إنشاء من فارغة" في الجزء العلوي من الصفحة.
  3. انقر على الرابط "البحث عن مئات من الموصلات ومشغلات" في الجزء السفلي من الصفحة.
  4. في نوع حقل البحث "تكرار"، وحدد "جدول - تكرار" من نتائج البحث لجدولة وظيفة تسليم البريد الإلكتروني لتشغيلها.
  5. في جزء التكرار في حقل التكرار، حدد تكرار الجدولة لتنفيذ هذا التدفق، مثل إرسال البريد الإلكتروني التلقائي لكل دقيقة، ساعة، يوم، أسبوع، وما إلى ذلك.

الخطوة التالية هي إضافة ثلاث وظائف (إنشاء وإخراج وإرسال البريد الإلكتروني) إلى التدفق المتكرر الذي تم إنشاؤه حديثاً. لإنجاز إضافة الوظائف المطلوبة إلى التدفق، اتبع الخطوات التالية:

  1. إنشاء إجراء لتنفيذ البرنامج النصي PowerShell لاسترداد توصيات الضبط

    • حدد " + خطوة جديدة"متبوعاً بـ " إضافة إجراء " داخل جزء تدفق التكرار.
    • في نوع حقل البحث "الأتمتة"، وحدد "Azure Automation - إنشاء وظيفة" من نتائج البحث.
    • في جزء إنشاء وظيفة، قم بتكوين خصائص الوظيفة. لهذا التكوين، ستحتاج إلى تفاصيل معرف اشتراك Azure ومجموعة الموارد وحساب التنفيذ الذي تم تسجيله مسبقاً في جزء حساب التنفيذ التلقائي. لمعرفة المزيد حول الخيارات المتوفرة في هذا القسم، راجع Azure Automation - إنشاء وظيفة.
    • أكمل إنشاء هذا الإجراء بالنقر على "حفظ التدفق".
  2. إنشاء إجراء لاسترداد الإخراج من البرنامج النصي PowerShell المنفذة

    • حدد " + خطوة جديدة"متبوعاً بـ " إضافة إجراء " داخل جزء تدفق التكرار
    • في نوع حقل البحث "الأتمتة" وحدد "Azure Automation - الحصول على مخرج وظيفة" من نتائج البحث. لمعرفة المزيد حول الخيارات المتوفرة في هذا القسم، انظر Azure Automation - الحصول على مخرج وظيفة.
    • تعبئة الحقول المطلوبة (مشابهة لإنشاء المهمة السابقة) - تعبئة معرف اشتراك Azure الخاص بك، ومجموعة الموارد، وحساب التنفيذ التلقائي (كما تم إدخاله في جزء حساب التنفيذ التلقائي).
    • انقر داخل الحقل "معرف الوظيفة" حتى تظهر قائمة "المحتوى الديناميكي" . من داخل هذه القائمة، حدد الخيار "معرف الوظيفة".
    • أكمل إنشاء هذا الإجراء بالنقر على "حفظ التدفق".
  3. إنشاء إجراء لإرسال بريد إلكتروني باستخدام تكامل Office 365

    • حدد " + خطوة جديدة"متبوعاً بـ " إضافة إجراء " داخل جزء تدفق التكرار.
    • في نوع حقل البحث "أرسل بريداً إلكترونياً" وحدد "Office 365 Outlook - إرسال بريداً إلكترونياً" من نتائج البحث.
    • في نوع الحقل، "إلى" ، في عنوان البريد الإلكتروني الذي تحتاج إلى إرسال إشعار البريد الإلكتروني.
    • في نوع الحقل، "الموضوع" ، في موضوع البريد الإلكتروني الخاص بك، على سبيل المثال "إشعار البريد الإلكتروني بتوصيات الضبط التلقائي".
    • انقر داخل الحقل "Body" حتى تظهر قائمة "المحتوى الديناميكي". من داخل هذه القائمة، ضمن "الحصول على إخراج الوظيفة"، حدد "المحتوى".
    • أكمل إنشاء هذا الإجراء بالنقر على "حفظ التدفق".

تلميح

لإرسال رسائل البريد الإلكتروني التلقائية إلى مستلمين مختلفين، أنشئ تدفقات منفصلة. في هذه التدفقات الإضافية، غيّر عنوان البريد الإلكتروني للمستلم في الحقل "إلى"، وسطر موضوع البريد الإلكتروني في حقل "الموضوع". يتيح إنشاء دفاتر تشغيل جديدة في Azure Automation باستخدام برامج PowerShell النصية المخصصة (مثل تغيير معرف اشتراك Azure)، المزيد من التخصيص للسيناريوهات التلقائية، مثل إرسال رسائل بريد إلكتروني إلى مستلمين منفصلين على توصيات الضبط التلقائي للاشتراكات المنفصلة.

ينتهي ما سبق من خطوات مطلوبة لتكوين سير عمل وظيفة تسليم البريد الإلكتروني. يظهر التدفق الكامل المكون من ثلاثة إجراءات تم إنشاؤها في الصورة التالية.

View automatic tuning email notifications flow

لاختبار التدفق، انقر على "تشغيل الآن" في الزاوية اليمنى العليا داخل جزء التدفق.

يمكن رؤية إحصاءات تشغيل الوظائف التلقائية، والتي توضح نجاح إشعارات البريد الإلكتروني المرسلة، من جزء تحليلات "التدفق".

Running flow for automatic tuning email notifications

يساعد جزء تحليلات "التدفق" في مراقبة نجاح تنفيذ الوظائف، وإذا لزم الأمر لاستكشاف الأخطاء وإصلاحها. في حالة استكشاف الأخطاء وإصلاحها، قد تحتاج أيضاً إلى فحص سجل تنفيذ البرنامج النصي PowerShell والذي يمكن الوصول إليها من خلال التطبيق Azure Automation.

يبدو الناتج النهائي للبريد الإلكتروني التلقائي مشابهاً للبريد الإلكتروني التالي الذي تم تلقيه بعد إنشاء وتشغيل هذا الحل:

Sample email output from automatic tuning email notifications

من خلال ضبط البرنامج النصي PowerShell، يمكنك ضبط إخراج وتنسيق البريد الإلكتروني التلقائي لاحتياجاتك.

يمكنك تخصيص الحل لإنشاء إشعارات عبر البريد الإلكتروني استناداً إلى حدث ضبط معين، وإلى مستلمين متعددين، للاشتراكات أو قواعد البيانات المتعددة، استناداً إلى سيناريوهاتك المخصصة.

الخطوات التالية