البرنامج التعليمي: مزامنة البيانات من SQL Edge إلى تخزين Azure Blob باستخدام Azure Data Factory

هام

لم يعد Azure SQL Edge يدعم النظام الأساسي ARM64.

يوضح لك هذا البرنامج التعليمي كيفية استخدام Azure Data Factory لمزامنة البيانات بشكل متزايد إلى تخزين Azure Blob من جدول في مثيل Azure SQL Edge.

قبل البدء

إذا لم تكن قد أنشأت قاعدة بيانات أو جدولاً في عملية نشر Azure SQL Edge، فاستخدم إحدى هذه الطرق لإنشاء أحدها:

  • استخدم SQL Server Management Studio أو Azure Data Studio للاتصال بـ SQL Edge. شغّل برنامج SQL نصي لإنشاء قاعدة البيانات والجدول.

  • إنشاء قاعدة بيانات وجدول باستخدام sqlcmd عن طريق الاتصال مباشرة بالوحدة النمطية SQL Edge. لمزيد من المعلومات، راجع الاتصال بمحرك قاعدة البيانات باستخدام sqlcmd.

  • استخدم SQLPackage.exe لنشر ملف حزمة DAC إلى حاوية SQL Edge. يمكنك أتمتة هذه العملية عن طريق تحديد URI لملف SqlPackage كجزء من تكوين الخصائص المطلوبة للوحدة النمطية. يمكنك أيضاً استخدام أداة العميل SqlPackage.exe مباشرة لنشر حزمة DAC إلى SQL Edge.

    للحصول على معلومات حول كيفية تنزيل SqlPackage.exe، راجع تنزيل sqlpackage وتثبيتها. فيما يلي بعض الأوامر النموذجية لـ SqlPackage.exe. لمزيد من المعلومات، راجع مستندات SqlPackage.exe.

    إنشاء حزمة DAC

    sqlpackage /Action:Extract /SourceConnectionString:"Data Source=<Server_Name>,<port>;Initial Catalog=<DB_name>;User ID=<user>;Password=<password>" /TargetFile:<dacpac_file_name>
    

    تطبيق حزمة DAC

    sqlpackage /Action:Publish /Sourcefile:<dacpac_file_name> /TargetServerName:<Server_Name>,<port> /TargetDatabaseName:<DB_Name> /TargetUser:<user> /TargetPassword:<password>
    

إنشاء جدول SQL وإجراء لتخزين مستويات العلامة المائية وتحديثها

يتم استخدام جدول العلامة المائية لتخزين الطابع الزمني الأخير الذي تمت مزامنة بياناته مسبقاً مع Azure Storage. يتم استخدام إجراء مخزن Transact-SQL (T-SQL) لتحديث الجدول العلامة المائية بعد كل مزامنة.

تشغيل هذه الأوامر على مثيل SQL Edge:

CREATE TABLE [dbo].[watermarktable] (
    TableName VARCHAR(255),
    WatermarkValue DATETIME,
);
GO

CREATE PROCEDURE usp_write_watermark @timestamp DATETIME,
    @TableName VARCHAR(50)
AS
BEGIN
    UPDATE [dbo].[watermarktable]
    SET [WatermarkValue] = @timestamp
    WHERE [TableName] = @TableName;
END
GO

إنشاء مسار Data Factory

في هذا القسم، ستقوم بإنشاء مسار Azure Data Factory لمزامنة البيانات إلى تخزين Azure Blob من جدول موجود في Azure SQL Edge.

إنشاء مصنع بيانات باستخدام واجهة مستخدم Data Factory

إنشاء مصنع بيانات عبر اتباع الإرشادات في هذا البرنامج التعليمي.

إنشاء مسار Data Factory

  1. في صفحة Let's get started الخاصة بواجهة مستخدم Data Factory، حدد "Create pipeline".

    Screenshot of the create a Data Factory pipeline.

  2. في صفحة General الخاصة بنافذة "Properties" للمسار، أدخل PeriodicSync في الاسم.

  3. أضف نشاط البحث للحصول على قيمة العلامة المائية القديمة. في جزء "Activities"، قم بتوسيع "General" واسحب نشاط "Lookup" إلى سطح مصمم المسار. غيّر اسم النشاط إلى OldWatermark.

    Screenshot of adding the old watermark lookup.

  4. قم بالتبديل إلى علامة التبويب "Settings" وحدد "New" لـ Source Dataset. ستقوم الآن بإنشاء مجموعة بيانات لتمثيل البيانات في جدول العلامة المائية. يحتوي هذا الجدول على العلامة المائية القديمة التي تم استخدامها في عملية النسخ السابقة.

  5. في نافذة "New Dataset"، حدد "Azure SQL Server"، ثم حدد "Continue".

  6. في نافذة "Set properties" لمجموعة البيانات تحت "Name"، أدخل WatermarkDataset.

  7. بالنسبة لـ Linked Service، حدد "New"، ثم أكمل الخطوات التالية:

    1. تحت "Name"، أدخل SQLDBEdgeLinkedService.

    2. تحت "Server name"، أدخل تفاصيل خادم SQL Edge الخاص بك.

    3. حدد اسم قاعدة البيانات الخاصة بك من القائمة.

    4. أدخلاسم المستخدم وكلمة المرور.

    5. لاختبار الاتصال بمثيل SQL Edge، حدد "Test connection".

    6. حدد إنشاء.

      Screenshot of creating a linked service.

    7. حدد موافق.

  8. في علامة التبويب "Settings"، حدد "Edit".

  9. في علامة التبويب الاتصال ion، حدد [dbo].[watermarktable] للجدول. إذا كنت تريد معاينة البيانات في الجدول، فحدد "Preview data".

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

  11. في جزء "Activities"، قم بتوسيع "General" واسحب نشاط "Lookup" آخر إلى سطح مصمم المسار. قم بتعيين اسم لـ NewWatermark في علامة التبويب "General" الخاصة بنافذة الخصائص. يحصل نشاط البحث هذا على قيمة العلامة المائية الجديدة من الجدول الذي يحتوي على بيانات المصدر بحيث يمكن نسخها إلى الوجهة.

  12. في نافذة الخصائص لنشاط البحث الثاني، قم بالتبديل إلى علامة تبويب "Settings" وتحديد "New" لإنشاء مجموعة بيانات للإشارة إلى الجدول المصدر الذي يحتوي على قيمة العلامة المائية الجديدة.

  13. في نافذة "New Dataset"، حدد "SQL Edge instance"، ثم حدد "Continue".

    1. في نافذة "Set properties"، تحت "Name"، أدخل SourceDataset. تحت "Linked service"، حدد "SQLDBEdgeLinkedService".

    2. تحت "Table"، حدد الجدول الذي ترغب في مزامنته. يمكنك أيضاً تحديد استعلام لمجموعة البيانات، كما هو موضح لاحقاً في هذا البرنامج التعليمي. يأخذ الاستعلام الأسبقية على الجدول الذي تحدده في هذه الخطوة.

    3. حدد موافق.

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

  15. حدد "Query" تحت "Use query". حدّث اسم الجدول في الاستعلام التالي ثم أدخل الاستعلام. أنت تحدد القيمة القصوى فقط لـ timestamp من الجدول. تأكد من تحديد "First row only".

    SELECT MAX(timestamp) AS NewWatermarkValue
    FROM [TableName];
    

    Screenshot of a select query.

  16. في جزء "Activities"، قم بتوسيع "Move & Transform" واسحب النشاط Copy من جزء "Activities" إلى سطح المصمم. عيّن اسم النشاط إلى IncrementalCopy.

  17. قم بتوصيل أنشطة البحث بنشاط النسخ عن طريق سحب الزر الأخضر المرفق بأنشطة البحث إلى نشاط النسخ. تحرير زر الماوس عندما ترى لون حد نشاط النسخ يتغير إلى اللون الأزرق.

  18. حدد نشاط النسخ وتأكد من رؤية خصائص النشاط في نافذة "Properties".

  19. يمكنك التبديل إلى علامة التبويب "Source" في نافذة "Properties" وأكمل هذه الخطوات:

    1. في مربع Source dataset، حدد "SourceDataset".

    2. تحت "Use query"، حدد "Query".

    3. أدخل استعلام SQL في مربع "Query". إليك مثال على الاستعلام:

    SELECT *
    FROM TemperatureSensor
    WHERE timestamp > '@{activity(' OldWaterMark ').output.firstRow.WatermarkValue}'
        AND timestamp <= '@{activity(' NewWaterMark ').output.firstRow.NewWatermarkvalue}';
    
  20. في علامة التبويب "Sink"، حدد "New" تحت "Sink Dataset".

  21. في هذا البرنامج التعليمي، مخزن بيانات المتلقي هو مخزن بيانات التخزين لدى Azure Blob. حدد "Azure Blob storage"، ثم حدد "Continue" في نافذة "New Dataset".

  22. في نافذة"Select Format"، حدد تنسيق بياناتك، ثم حدد "Continue".

  23. في نافذة "Set Properties"، تحت "Name"، أدخل SinkDataset. تحت "Linked service"، حدد "New". ستقوم الآن بإنشاء اتصال (خدمة مرتبطة) بتخزين Azure Blob.

  24. في نافذة "New Linked Service (Azure Blob storage)"، أكمل الخطوات التالية:

    1. في مربع "Name"، أدخل AzureStorageLinkedService.

    2. تحت Storage account name، حدد حساب تخزين Azure لاشتراك Azure الخاص بك.

    3. اختبر الاتصال ثم حدد "Finish".

  25. في نافذة "Set Properties"، تأكد من تحديد AzureStorageLinkedService تحت "Linked service". حدد "Create" و"OK"

  26. في علامة التبويب "Sink"، حدد "Edit".

  27. انتقل إلى علامة التبويب "Connection" الخاصة بـ SinkDataset وأكمل الخطوات التالية:

    1. ضمن مسار الملف، أدخل asdedatasync/incrementalcopy، حيث asdedatasync هو اسم حاوية كائن ثنائي كبير الحجم وهو incrementalcopy اسم المجلد. قم بإنشاء الحاوية إذا لم تكن موجودة، أو استخدم اسم حاوية موجودة. يقوم Azure Data Factory تلقائيا بإنشاء مجلد incrementalcopy الإخراج إذا لم يكن موجودا. يمكنك استخدام زر "Browse" لدى مسار الملف للتنقل إلى مجلد الحاوية الثنائية كبيرة الحجم.

    2. بالنسبة لجزء الملف من مسار الملف، حدد إضافة محتوى ديناميكي [Alt+P]، ثم أدخل @CONCAT('Incremental-', pipeline().RunId, '.txt') في النافذة التي تفتح. حدد إنهاء. يتم إنشاء اسم الملف شكل ديناميكي عبر التعبير. كل مسار له معرّف فريد. يستخدم نشاط النسخ معرف التشغيل لإنشاء اسم الملف.

  28. يمكنك التبديل إلى محرر المسار عن طريق تحديد علامة تبويب المسار في الجزء العلوي أو عن طريق تحديد اسم المسار في طريقة عرض الشجرة على اليسار.

  29. في جزء "Activities"، قم بتوسيع "General" واسحب النشاط Stored Procedure من جزء "Activities" إلى سطح مصمم المسار. توصيل المخرج الأخضر (ناجح) لنشاط النسخ بنشاط الإجراء المخزن.

  30. حدد نشاط الإجراء المخزن في مصمم البنية الأساسية لبرنامج ربط العمليات التجارية وغير اسمه إلى SPtoUpdateWatermarkActivity.

  31. يمكنك التبديل إلى "SQL Account"، وحدد *QLDBEdgeLinkedService تحت "Linked service".

  32. يمكنك التبديل إلى علامة التبديل "Stored Procedure" وأكمل هذه الخطوات:

    1. ضمن اسم الإجراء المخزن، حدد [dbo].[usp_write_watermark].

    2. لتحديد قيم معلمات الإجراء المُخزّن، حدد "Import parameter" وأدخل هذه القيم للمعلمات:

    Name نوع القيمة‬
    LastModifiedTime DateTime @{activity('NewWaterMark').output.firstRow.NewWatermarkvalue}
    TableName السلسلة‬ @{activity('OldWaterMark').output.firstRow.TableName}
  33. للتحقق من صحة إعدادات المسار، حدد "Validate" على شريط الأدوات. تأكد من عدم وجود أخطاء التحقق من الصحة. لإغلاق نافذة "Pipeline Validation Report"، حدد >>.

  34. انشر الكيانات (الخدمات المرتبطة، ومجموعات البيانات، والمسارات) في خدمة Azure Data Factory عن طريق تحديد الزر "Publish All". انتظر حتى ترى رسالة تؤكد نجاح عملية النشر.

تشغيل مسار استناداً إلى جدول زمني

  1. في شريط أدوات المسار، حدد "Add Trigger"، وحدد "New/Edit"، ثم حدد "New".

  2. قم بتسمية المشغّل HourlySync الخاص بك. تحت "Type"، حدد "Schedule". قم بتعيين التكرار ليكون كل ساعة.

  3. حدد موافق.

  4. حدد "Publish All".

  5. حدد "Trigger Now".

  6. يمكنك التبديل إلى علامة التبويب "Monitor" في الجهة اليسرى. يمكنك مشاهدة حالة تشغيل المسار التي تم تشغيلها بواسطة المشغل اليدوي. حدد "Refresh" لتحديث القائمة.

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

  • يقوم مسار Azure Data Factory في هذا البرنامج التعليمي بنسخ البيانات من جدول على مثيل SQL Edge إلى موقع في تخزين Azure Blob مرة كل ساعة. لمعرفة المزيد حول استخدام Data Factory في سيناريوهات أخرى، راجع البرامج التعليمية.