مزامنة قواعد بيانات SQL Server في مصادر بعيدة مختلفة

السيناريوهات

إنّ التطبيقات التي يستخدمها مندوبوا المبيعات المتنقلين أو العاملون الميدانيون الآخرون – سائقو التوصيل وممرضات المنازل… الخ ، مصممة لجمع البيانات من الأماكن البعيدة ثم إرسالها الى مركز البيانات. أيضا، فإن البيانات من مركز البيانات، تحتاج أحيانا لإعادة ارسالها إلى هذه الأماكن البعيدة، لتبقى محدّثة أولاً بأول.

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

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

الحلول المقترحة :

1. إستخدام النسخ المتماثل SQL Server Replication. حيث أنه يزامن قواعد البيانات من خلال نسخ وتوزيع السجلات من قواعد بيانات إلى أخرى، عندما تكون قواعد البيانات هذه في أماكن مختلفة.

هناك بعض القيود لا يمكن عندها استخدام النسخ المتماثل SQL Server Replication :

  • فقط إصدارات ال Standard أو Enterprise من قواعد بيانات SQL Server يمكن أن تقوم بدور الناشرPublisher، أما اذا كنت تستخدم الإصدار المجاني SQL Express فيجب عليك ان تحدّث الإصدار.
  • إن التصميم المكون من ناشر Publisher بإصدار SQL Server 2005 ومشترك Subscriber بإصدار SQL Server 2008في النسخ المتماثل على الشبكة غير مدعوم.
  • يجب أن يكون إصدار الموزع Distributor من قواعد ىالبيانات أعلى أو مساوٍ لإصدار الناشر Publisher.
  • يجب أن يكون إصدار قواعد البيانات للمشترك Subscriber في النسخ المتماثل SQL Replication من نوع Transactional
    Replication بحدود إصدارين من إصدار الناشرPublisher، على سبيل المثال اذا كان الناشرPublisher يعمل SQL Server 2000 ، لا يمكن للمشترك Subscriberأن يعمل بإصدار SQL Server 2012.
  • يجب أن يكون إصدار قواعد البيانات للمشترك Subscriber في النسخ المتماثل من نوع Merge Replication أقل من أو يساوي إصدار الناشرPublisher، على سبيل المثال ، المشتركون Subscribers بإصدار SQL Server 2012 لا يمكن أن يعملوا مع ناشر Publisher بإصدار SQL Server 2008.

2. استخدام الإطار المتزامن Sync Framework، وهو واجهة تطبيق برامج API تمكنك من بناء تطبيقات والمزامنة بين قواعد البيانات. مع انها توفر الكثير من المرونة، لكنها تتطلب أيضا البرمجة والتطوير، مما يزيد من التكلفة والإطار الزمني للتنفيذ.


3. استخدام تطبيق ApexSQL Data Diff ، وهي أداة مقارنة ومزامنة بيانات SQL Server و التي تكتشف الفروق بين البيانات وحلها دون أخطاء. ويمكنها ايضا مقارنة ومزامنة قواعد البيانات الرئيسية مع النسخ الاحتياطية الأصلية او الأصلية المضغوطة و إنشاء تقارير شاملة عن الاختلافات المكتشفة، وإنشاء ملف التزامن وتنفيذه.

طريقة العمل:

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

  1. إبدأ برنامج ApexSQL Data Diff
  2. لتحديد المصدر، اختر النوع Database ، ومن ثم أدخل مركز بياناتك في حقل الخادم ، و وفي حقل قاعدة البيانات أدخل قاعدة بياناتك المركزية.
  3. لاختيار الوجهة ، أختر النوع Database ، واختر نوع الخادم جهاز بعيد (وهو جهاز الممرضة النقال) ، واخيرا قاعدة البيانات التي سيتم مزامنتها.

    Datasources type and details selection in ApexSQL Data Diff

  4. انقر على زر Compare للمقارنة.

    كل الجداول في قاعدة البيانات هذه سيتم مقارنتها وستظهر في الشبكة الرئيسية Main grid :

    Main grid after SQL Server database comparison

    والسجلات التي تم إدخالها في جدول الزيارات في المستشفى ستظهر في تبويب المفقودات Missing.

  5. اختر الجداول التي تريد مزامنتها:

    Checking the tables for database synchronization

  6. انقر على Synchronize للمزامنة من التبويب الرئيسي Home

    Synchronize button in ApexSQL Data Diff

  7. انقر Next في خطوة وجهة المزامنة من عملية المزامنة
  8. في خطوة خيارات الإخراج من عملية المزامنة، حدد مزامنة قاعدة بيانات Synchronize a database باعتباره الإجراء الناتج.

    Choosing output action in Synchronization wizard

  9. انقر Next
  10. تحقق من ملخص الإجراءات التي سوف يتم تنفيذها وأي تحذيرات ظاهرة

    Summary of the actions and warnings preview

  11. انقر على زر Synchronize للمزامنة في التبويب الرئيسي Home
  12. انقر OK في صندوق الاعلام

    SQL Server database change notification dialogue

    عندما تنتهي عملية مزامنة قاعدة البيانات ستظهر الرسالة التالية:

    Script execution results message

  13. انقر على زر Save في التبويب الرئيسي Home في المشروع لحفظ إعدادات المزامنة في مشروع والقيام بعملية المزامنة بسرعة وسهولة في المرة المقبلة.

وفي المساء ، اذا اردت مزامنة السجلات التي أدخلتها الممرضات خلال اليوم في قاعدة البيانات الخاصة بها مع السجلات في قاعدة البيانات المركزية، ستتّبع الخطوات نفسها:

  1. ضع قاعدة البيانات على الجهاز النقال على أنها المصدر وقاعدة البيانات المركزية على أنها الوجهة.

    Selecting the SQL Server database Source and Destination

  2. انقر Compare للمقارنة.
  3. اختر الجدول الذي تمت إضافة السجلات إليه خلال اليوم. ستظهر هذه السجلات في تبويب المفقودات Missing.

    Comparison and synchronization of the Source and Destination databases

  4. أختر زر Synchronize من القائمة للمزامنة.
  5. إمضي في خطوات معالج التزامن وأضف السجلات المفقودة إلى قاعدة البيانات المركزية.
  6. اضغط Save من قائمة التبويب الرئيسية لحفظ إعدادات المزامنة في المشروع والقيام بعملية المزامنة بسرعة وسهولة في المرة المقبلة.

والآن بعد حفظ المشروع ، بإمكانك جعل عملية المزامنة أوتوماتيكية :

    1. أحفظ الأمر التالي على شكل ملف الاوامر التلقائي E:\Test\Morning.bat الذي سينفذ المشروع الذي تم حفظه Morning_Central_Nurse.axdd :

    2. "C:\Program files 
      (x86)\ApexSQL\ApexSQLDataDiff2014\ApexSQLDataDiff.com" /
      pf:D: \Test\Morning_Central_Nurse.axdd /
      of:D: \Test\MorningSync.sql / sync / bu:D: \Test / v / f
      

      وسوف يقوم بإنشاء الملف MorningSync.sql في المجلد D:\Test وذلك لإضافة البيانات من قاعدة البيانات المركزية إلى قاعدة بيانات الممرضات ، وأخذ نسخة احتياطية كاملة لقاعدة بيانات الممرضات في المجلد D:\Test وفي النهاية إضافة السجلات المفقودة الى قواعد بيانات الممرضات.

      1. ابدأ برنامج SQL Server Management Studio.
      2. من خلال المتصفح Object Explorer ، تصفح للوصول الى SQL Server Agent ، ثم أنقر بالزر الأيمن للفأرة على Jobs لاختيار New Job

      3. حدد إسم العمل من خلال Job Name

      4. أختر تبويب الخطوات ، ثم انقر على New لإنشاء خطوة جديدة في العمل
      5. أختر نوع الخطوة Operating system (CmdExec) ، اضف إسم ثم اضغط Open
      6. أختر ملف الأوامر التلقائية الذي حفظته سابقا D:\Test\MorningSync.bat

        SQL Server job steps

      7. انقر على زر OK
      8. افتح تبويب جداول المواعيد وحدد متى ستنفذ عملية مزامنة قاعدة البيانات

        Scheduling a SQL Server job

    قم بإعادة الخطوات من 3 الى 9 لجدولة العمل للمزامنة الليلية.

    إن مقارنة ومزامنة قواعد بيانات SQL Server في المواقع البعيدة مع قاعدة البيانات المركزية باستخدام برنامج ApexSQL Data Diff يمكن القيام بها بغض النظر عن إصدارات قواعد بيانات SQL Server المستخدمة في كل من المواقع البعيدة والمركزية ودون الحاجة إلى معرفة بالبرمجة وتحت سيطرتك الكاملة ، وصولا الى أدنى مستوى .

    مترجم Ahmad Yaseen

    January 19, 2016