إنشاء مسارات نسخ بيانات واسعة النطاق باستخدام نهج يستند إلى بيانات التعريف في أداة نسخ البيانات

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

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

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

إنشاء مهام نسخ تعتمد على بيانات التعريف من أداة نسخ البيانات

  1. تحديد مهام نسخ تعتمد على بيانات التعريف من أداة نسخ البيانات.

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

    تحديد نوع المهمة

  2. إدخال اتصال قاعدة البيانات المصدر. كما يمكنك استخدام خدمة مرتبطة ذات معلمات.

    تحديد خدمة مرتبطة ذات معلمات

  3. تحديد اسم الجدول لنسخه.

    تحديد جدول

    إشعار

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

  4. اختر سلوك التحميل.

    تلميح

    إذا كنت تريد إجراء نسخة كاملة على جميع الجداول، فحدد تحميل كامل لجميع الجداول. إذا كنت تريد إجراء نسخة تزايدية، يمكنك تحديد تكوين لكل جدول على حدة،وتحديد Delta load وكذلك اسم عمود العلامة المائية والقيمة لبدء تشغيل كل جدول.

  5. حدد مخزن بيانات الوجهة.

  6. في صفحة الإعدادات، يمكنك تحديد الحد الأقصى لعدد أنشطة النسخ لنسخ البيانات من مخزن المصدر الخاص بك في وقت واحد عبر عدد مهام النسخ المتزامنة. القيمة الافتراضية هي 20.

    صفحة Settings

  7. بعد توزيع مسار، يمكنك نسخ أو تنزيل البرامج النصية SQL من واجهة المستخدم لإنشاء جدول التحكم وإجراء مخزن.

    تنزيل البرامج النصية

    سترى اثنين من البرامج النصية SQL.

    • يتم استخدام البرنامج النصي SQL الأول لإنشاء جدولي تحكم. يخزن جدول التحكم الرئيسي قائمة الجدول أو مسار الملف أو نسخ السلوكيات. يخزن جدول التحكم في الاتصال قيمة الاتصال في مخزن البيانات إذا استخدمت خدمة مرتبطة ذات معلمات.
    • يتم استخدام البرنامج النصي SQL الثاني لإنشاء إجراء مخزن. يتم استخدامه لتحديث قيمة العلامة المائية في جدول التحكم الرئيسي عند إكمال مهام النسخ الإضافية في كل مرة.
  8. افتح SSMS للاتصال بملقم جدول التحكم وتشغيل البرنامجين النصيين SQL لإنشاء جداول التحكم وإجراء مخزن.

    إنشاء برنامج نصي لجدول التحكم

  9. الاستعلام عن جدول التحكم الرئيسي وجدول التحكم في الاتصال لمراجعة بيانات التعريف فيه.

    جدول التحكم الرئيسيالبرنامج النصي 1 لجدول التحكم في الاستعلام

    جدول التحكم في الاتصالالبرنامج النصي2 لجدول التحكم في الاستعلام

  10. العودة إلى مدخل ADF لعرض المسارات وتصحيحها. سترى مجلداً تم إنشاؤه بتسمية"MetadataDrivenCopyTask_############". انقر فوق تسمية المسار مع "MetadataDrivenCopyTask###_TopLevel" وانقر فوق تشغيل تتبع الأخطاء.

    مطلوب منك إدخال المعلمات التالية:

    اسم المعلمات ‏‏الوصف
    MaxNumberOfConcurrentTasks يمكنك دائماً تغيير الحد الأقصى لعدد أنشطة النسخ المتزامنة التي يتم تشغيلها قبل تشغيل المسارات. القيمة الافتراضية ستكون القيمة التي تقوم بإدخالها في أداة نسخ البيانات.
    MainControlTableName يمكنك دائما تغيير اسم جدول عنصر التحكم الرئيسي، بحيث يحصل المسار على بيانات التعريف من هذا الجدول قبل تشغيله.
    ConnectionControlTableName يمكنك دائماً تغيير اسم جدول التحكم في الاتصال (اختياري)، بحيث يحصل المسار على بيانات التعريف المتعلقة باتصال مخزن البيانات قبل التشغيل.
    MaxNumberOfObjectsReturnedFromLookupActivity لتجنب الوصول إلى الحد الأقصى لنشاط البحث عن الإخراج، هناك طريقة لتحديد الحد الأقصى لعدد الكائنات التي يتم إرجاعها بواسطة نشاط البحث. في معظم الحالات، غير مطلوب تغيير القيمة الافتراضية.
    windowStart عند إدخال قيمة ديناميكية (على سبيل المثال، yyyy/mm/dd) كمسار مجلد، يتم استخدام المعلمة لتمرير وقت المشغل الحالي إلى مسار لملء مسار المجلد الحيوي. عند تشغيل مسار بواسطة مشغل جدولة أو مشغل الإطارات الهابطة، المستخدمين لا تحتاج إلى إدخال قيمة هذه المعلمة. قيمة العينة: 2021-01-25T01:49:28Z
  11. تمكين المشغل لتشغيل المسارات.

    تمكين المشغل

تحديث جدول التحكم بواسطة أداة نسخ البيانات

يمكنك دائماً تحديث جدول التحكم مباشرة عن طريق إضافة الكائن المراد نسخه أو إزالته أو تغيير سلوك النسخ لكل جدول. نحن أيضاً ننشئ تجربة واجهة المستخدم في أداة نسخ البيانات لتسهيل رحلة تحرير جدول التحكم.

  1. انقر بزر الماوس الأيمن فوق مسار المستوى الأعلى: MetadataDrivenCopyTask_xxx_TopLevel، ثم حدد تحرير جدول التحكم.

    تحرير جدول التحكم1

  2. حدد صفوفاً من جدول التحكم لتحريرها.

    تحرير جدول التحكم2

  3. انتقل الإنتاجية أداة نسخ البيانات، وسوف يأتي مع برنامج نصي SQL جديد بالنسبة لك. أعد تشغيل البرنامج النصي SQL لتحديث جدول التحكم.

    تحرير جدول التحكم3

    إشعار

    لن تتم إعادة توزيع المسار. يساعدك البرنامج النصي SQL الجديد الذي تم إنشاؤه على تحديث جدول عنصر التحكم فقط.

جداول التحكم

جدول التحكم الرئيسي

يحتوي كل صف في جدول التحكم على بيانات التعريف لكائن واحد (على سبيل المثال، جدول واحد) ليتم نسخها.

اسم العمود الوصف
البطاقة/رقم البطاقة المعرف الفريد للكائن المراد نسخه.
SourceObjectSettings بيانات التعريف لمجموعة بيانات المصدر. يمكن أن يكون اسم مخطط أو اسم جدول، وما إلى ذلك. إليك مثالاً.
SourceConnectionSettingsName اسم إعداد اتصال المصدر في جدول التحكم في الاتصال. إنه اختياري.
CopySourceSettings بيانات التعريف الخاصة بخصائص المصدر في نشاط النسخ. يمكن أن يكون استعلاماً أو أقساماً وما إلى ذلك. إليك مثالاً.
SinkObjectSettings بيانات التعريف لمجموعة البيانات الوجهة. يمكن أن يكون اسم الملف، مسار المجلد أو اسم الجدول، وما إلى ذلك. إليك مثالاً. إذا تم تحديد مسار مجلد حيوي، فلن تتم كتابة قيمة المتغير هنا في جدول التحكم.
SinkConnectionSettingsName اسم إعداد الاتصال الوجهة في جدول التحكم في الاتصال. إنه اختياري.
CopySinkSettings بيانات التعريف خاصية مصدر في نشاط النسخ. يمكن أن يكون preCopyScript أو tableOption وما إلى ذلك. إليك مثالاً.
عمليات نسخ النشاط بيانات التعريف خاصية المترجم في نشاط النسخ. يتم استخدامه لتعريف تعيين العمود.
TopLevelPipelineName اسم مسار العلوي الذي يمكن نسخ هذا الكائن.
اسم المشغل اسم المشغل، الذي يمكن أن يؤدي إلى المسار لنسخ هذا الكائن. إذا تم تشغيل التصحيح، يكون الاسم هو Sandbox. إذا كان التنفيذ يدوياً، يكون الاسم هو Manual. إذا تمت جدولة التشغيل، يكون الاسم هو اسم المشغل المقترن. يمكن إدخال أسماء متعددة.
DataLoadingBehaviorSettings تحميل كامل مقابل تحميل دلتا.
معرف المهمة ترتيب الكائنات المراد نسخها بعد جدول TaskId في عنصر التحكم (الطلب حسب [TaskId] DESC). إذا كان لديك كميات هائلة من الكائنات المراد نسخها ولكن مسموحًا بعدد محدود فقط من العناصر المتزامنة، يمكنك تغيير TaskId لكل كائن لتحديد الكائنات التي يمكن نسخها مسبقًا. القيمة الافتراضية هي 0.
CopyEnabled حدد ما إذا كان العنصر ممكّناً في عملية استيعاب البيانات. القيم المسموح بها: 1 (ممكن)، 0 (معطل). القيمة الافتراضية هي 1.

جدول التحكم في الاتصال

يحتوي كل صف في جدول التحكم على إعداد اتصال واحد لتخزين البيانات.

اسم العمود ‏‏الوصف‬
الاسم اسم الاتصال ذات المعلمات في جدول التحكم الرئيسي.
تعيينات الاتصال إعدادات الاتصال. يمكن أن يكون اسم "قاعدة بيانات" واسم الخادم وهلم جراً.

التدفقات

سترى ثلاثة مستويات من المسارات التي تم إنشاؤها بواسطة أداة نسخ البيانات.

MetadataDrivenCopyTask_xxx_TopLevel

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

المعلمات

اسم المعلمات ‏‏الوصف
MaxNumberOfConcurrentTasks يمكنك دائماً تغيير الحد الأقصى لعدد أنشطة النسخ المتزامنة التي يتم تشغيلها قبل تشغيل المسارات. القيمة الافتراضية ستكون القيمة التي تقوم بإدخالها في أداة نسخ البيانات.
MainControlTableName اسم الجدول لجدول التحكم الرئيسي. سيحصل المسار على بيانات التعريف من هذا الجدول قبل تشغيله
ConnectionControlTableName اسم الجدول لجدول التحكم في الاتصال (اختياري). سيحصل المسار على بيانات التعريف المتعلقة باتصال مخزن البيانات قبل التشغيل
MaxNumberOfObjectsReturnedFromLookupActivity لتجنب الوصول إلى الحد الأقصى لنشاط البحث عن الإخراج، هناك طريقة لتحديد الحد الأقصى لعدد الكائنات التي يتم إرجاعها بواسطة نشاط البحث. في معظم الحالات، غير مطلوب تغيير القيمة الافتراضية.
windowStart عند إدخال قيمة ديناميكية (على سبيل المثال، yyyy/mm/dd) كمسار مجلد، يتم استخدام المعلمة لتمرير وقت المشغل الحالي إلى مسار لملء مسار المجلد الحيوي. عند تشغيل مسار بواسطة مشغل جدولة أو مشغل الإطارات الهابطة، المستخدمين لا تحتاج إلى إدخال قيمة هذه المعلمة. قيمة العينة: 2021-01-25T01:49:28Z

الأنشطة

اسم النشاط نوع النشاط ‏‏الوصف
GetSumOfObjectsToCopy البحث حساب العدد الإجمالي للكائنات (جداول وما إلى ذلك) المطلوب نسخها في هذا التشغيل.
CopyBatchesOfObjectsSequentially ForEach الخروج بعدد الدفعات التسلسلية استناداً إلى الحد الأقصى المسموح به مهام النسخ المتزامنة، ثم تنفيذ مسار آخر لنسخ دفعات مختلفة بشكل تسلسلي.
CopyObjectsInOneBtach تنفيذ مسار تنفيذ مسار آخر لنسخ دفعة واحدة من الكائنات. سيتم نسخ الكائنات التي تنتمي إلى هذه الدفعة بالتوازي.

MetadataDrivenCopyTask_xxx_ MiddleLevel

سيقوم المسار هذا بنسخ دفعة واحدة من الكائنات. سيتم نسخ الكائنات التي تنتمي إلى هذه الدفعة بالتوازي.

المعلمات

اسم المعلمات ‏‏الوصف
MaxNumberOfObjectsReturnedFromLookupActivity لتجنب الوصول إلى الحد الأقصى لنشاط البحث عن الإخراج، هناك طريقة لتحديد الحد الأقصى لعدد الكائنات التي يتم إرجاعها بواسطة نشاط البحث. في معظم الحالات، غير مطلوب تغيير القيمة الافتراضية.
TopLevelPipelineName اسم مسار الطبقة العليا.
اسم المشغل اسم المشغل.
CurrentSequentialNumberOfBatch معرف الدفعة التسلسلية.
SumOfObjectsToCopy إجمالي عدد الكائنات التي تريد نسخها.
SumOfObjectsToCopyForCurrentBatch عدد الكائنات التي يجب نسخها في الدفعة الحالية.
MainControlTableName اسم جدول التحكم الرئيسي.
ConnectionControlTableName اسم جدول التحكم في الاتصال.

الأنشطة

اسم النشاط نوع النشاط ‏‏الوصف
DivideOneBatchIntoMultipleGroups ForEach تقسيم الكائنات من دفعة واحدة إلى مجموعات متوازية متعددة لتجنب الوصول إلى حد الإخراج لنشاط البحث.
GetObjectsPerGroupToCopy البحث الحصول على كائنات (جداول وما إلى ذلك) من جدول التحكم المطلوب نسخها في هذه المجموعة. ترتيب الكائنات المراد نسخها بعد جدول TaskId في عنصر التحكم (الطلب حسب [TaskId] DESC).
CopyObjectsInOneGroup تنفيذ مسار تنفيذ مسار آخر لنسخ الكائنات من مجموعة واحدة. سيتم نسخ الكائنات التابعة لهذه المجموعة بالتوازي.

MetadataDrivenCopyTask_xxx_ BottomLevel

سيقوم المسار هذا بنسخ كائنات من مجموعة واحدة. سيتم نسخ الكائنات التابعة لهذه المجموعة بالتوازي.

المعلمات

اسم المعلمات ‏‏الوصف
ObjectsPerGroupToCopy عدد الكائنات التي يجب نسخها في المجموعة الحالية.
ConnectionControlTableName اسم جدول التحكم في الاتصال.
windowStart يتم استخدامه لتمرير الوقت الحالي للمشغل لمسار من أجل ملء مسار المجلد الحيوي إذا تم تكوينه من قبل المستخدم.

الأنشطة

اسم النشاط نوع النشاط ‏‏الوصف
ListObjectsFromOneGroup ForEach سرد الكائنات من مجموعة واحدة ثم تكرير كل واحد منهم إلى الأنشطة المتلقين للمعلومات.
RouteJobsBasedOnLoadingBehavior التبديل تحقق من سلوك التحميل لكل كائن. إذا كان الافتراضي أو حالة FullLoad، فقم بتحميل كامل. إذا كانت حالة دلتا التحميل، فقم بتحميل تدريجي عبر عمود العلامة المائية لتحديد التغييرات
FullLoadOneObject نسخ خذ لقطة كاملة على هذا الكائن وانسخه إلى الوجهة.
DeltaLoadOneObject نسخ نسخ البيانات التي تم تغييرها فقط من آخر مرة عن طريق مقارنة القيمة في عمود العلامة المائية لتحديد التغييرات.
GetMaxWatermarkValue البحث الاستعلام عن الكائن المصدر للحصول على القيمة القصوى من عمود العلامة المائية.
UpdateWatermarkColumnValue StoreProcedure اكتب قيمة العلامة المائية الجديدة للتحكم في الجدول لاستخدامها في المرة القادمة.

القيود المعروفة

  • لا يمكن وضع معلمات على اسم وقت تشغيل التكامل، ونوع قاعدة البيانات، ونوع تنسيق الملف في ADF. على سبيل المثال، إذا كنت تريد استيعاب البيانات من كل من Oracle Server وSQL Server، فستحتاج لمساري معلمات مختلفة. ولكن يمكن مشاركة جدول التحكم المفرد بمجموعتين من المسارات.
  • يتم استخدام OPENJSON في البرامج النصية SQL التي تم إنشاؤها بواسطة أداة نسخ البيانات. إذا كنت تستخدم SQL Server لاستضافة جدول التحكم، يجب أن يكون SQL Server 2016 (13.x) والأحدث لدعم الدالة OPENJSON.

جرب هذه البرامج التعليمية التي تستخدم أداة نسخ البيانات: