استكشاف الوظائف المرنة

مكتمل

تتمثل أحد الأسباب التي جعلت العديد من مسؤولي قواعد البيانات أصبحوا على دراية كبيرة بخدمة Azure automation في أن Azure SQL Database افتقرت في البداية إلى إمكانيات المهام المجدولة.

يسمح لك ميزة المهام المرنة بتشغيل مجموعة من نصوص T-SQL على مجموعة من الخوادم أو قواعد البيانات باعتبارها مهمة لمرة واحدة، أو باستخدام جدول زمني محدد. تعمل المهام المرنة بصورة مماثلة لمهام SQL Server Agent، إلا إنها تقتصر على تنفيذ T-SQL. تعمل المهام عبر جميع مستويات Azure SQL Database. يستمر استخدام مهام عامل SQL لأتمتة المهام في SQL Server ويتم تضمينها أيضاً في مثيلات Azure SQL المُدارة.

Screenshot of the elastic job architecture diagram.

ولتكوين مهام مرنة، يتعين وجود عامل مهام وقاعدة بيانات مخصصة لإدارة مهامك. يُعد مستوى الخدمة الموصى به لقاعدة بيانات المهام هو S1 أو أعلى، وسيعتمد مستوى الخدمة الأمثل على عدد المهام التي ستنفذها ومعدل تكرار تلك المهام.

دعونا نراجع مكونات الوظائف المرنة:

  • عامل الوظيفة المرنة - هو مورد Azure لتشغيل الوظائف وإدارتها.
  • قاعدة بيانات الوظيفة - قاعدة بيانات مخصصة لإدارة وظائفك.
  • المجموعة المستهدفة - مجموعة من الخوادم والتجمعات المرنة وقواعد البيانات الفردية التي سيتم تشغيل الوظيفة فيها.
  • الوظيفة - برنامج نصي واحد أو أكثر من البرامج النصية T-SQL التي تشكل خطوة مهمة.

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

Screenshot of the elastic job agent creation page.

يمكنك إنشاء عامل وظيفة مرن من خلال مدخل Microsoft Azure. في صفحة Elastic Job agent، تأكد من توفير اسم للعامل الخاص بك، وحدد قاعدة بيانات SQL لقاعدة بيانات وظيفتك.

يمكنك إنشاء مجموعة مستهدفة باستخدام إما PowerShell أو T-SQL. تنشئ القصاصة البرمجية التالية مجموعة هدف MyServerGroup بما في ذلك جميع قواعد البيانات الموجودة على الخادم في وقت التنفيذ. تفترض هذه التعليمات البرمجية المقتطفة أنه تم توفير المتغير $jobAgent و$targetServerName مسبقاً.

# create MyServerGroup target group
$serverGroup = $jobAgent | New-AzSqlElasticJobTargetGroup -Name 'MyServerGroup'

$serverGroup | Add-AzSqlElasticJobTarget -ServerName $targetServerName -RefreshCredentialName $masterCred.CredentialName

تنشئ التعليمات البرمجية المقتطفة أدناه مهمة مرنة، وتضيف خطوات المهمة باستخدام PowerShell. تُعد الخطوة 1 مسؤولة عن إنشاء جدول MyTable إذا كان موجوداً.

Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce

Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"

$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1

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

وأخيراً، قم بتشغيل الوظيفة المرنة MyFirstElasticJob باستخدام PowerShell.

Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution

سيناريوهات حالة الاستخدام

يمكن استخدام الوظائف المرنة في السيناريوهات التالية:

  • أتمتة مهام الإدارة للتشغيل على جدول زمني محدد
  • توزيع تغييرات المخطط
  • حركات البيانات
  • جمع البيانات وتجميعها لإعداد التقارير أو لأغراض أخرى
  • تحميل البيانات من مخزن Azure Blob
  • تكوين الوظائف للتنفيذ عبر مجموعة من قواعد البيانات على أساس متكرر، مثلاً خلال ساعات الذروة
  • معالجة البيانات عبر عدد كبير من قواعد البيانات، على سبيل المثال، جمع بيانات تتبع الاستخدام. يتم تجميع النتائج بعد ذلك في جدول وجهة واحد لمزيدٍ من التحليل.