استكشاف مشكلات SQL Data Sync وإصلاحها

ينطبق على: قاعدة بيانات Azure SQL

توضح هذه المقالة كيفية استكشاف المشكلات المعروفة المتعلقة بـ SQL Data Sync في Azure وإصلاحها. إذا كان هناك حل لمشكلة ما، فسيتم توفيره هنا.

للحصول على نظرة عامة حول SQL Data Sync، راجع مزامنة البيانات عبر عدة قواعد بيانات سحابية ومحلية مع SQL Data Sync في Azure.

هام

لا يدعم SQL Data Sync المثيل المُدار Azure SQL في الوقت الحالي.

مشكلات متزامنة

فشل المزامنة في واجهة مستخدم المدخل لقواعد البيانات المحلية المرتبطة بعامل العميل

فشل المزامنة في واجهة مستخدم المدخل لـ SQL Data Sync لقواعد البيانات المحلية المقترنة بعامل العميل. على الكمبيوتر المحلي الذي يقوم بتشغيل العامل، سترى أخطاء System.IO.IOException في سجل الأحداث. تشير الأخطاء إلى أن القرص لا يحتوي على مساحة كافية.

  • السبب. مساحة محرك الأقراص غير كافية.

  • الدقة. قم بإنشاء مساحة أكبر على محرك الأقراص حيث يوجد %TEMP%.

مجموعة المزامنة الخاصة بي عالقة في حالة المعالجة

كانت مجموعة المزامنة في SQL Data Sync في حالة المعالجة لفترة طويلة. لا يستجيب للأمر stop ولا تعرض السجلات أي إدخالات جديدة.

قد يؤدي أي من الشروط التالية إلى توقف مجموعة مزامنة في حالة المعالجة:

  • السبب. عامل العميل غير متصل

  • الدقة. تأكد من أن عامل العميل متصل ثم حاول مرة أخرى.

  • السبب. عامل العميل غير مثبت أو مفقود.

  • الدقة. إذا تم إلغاء تثبيت عامل العميل أو فقده بطريقة أخرى:

    1. قم بإزالة ملف XML العامل من مجلد تثبيت SQL Data Sync، إذا كان الملف موجوداً.
    2. قم بتثبيت العامل على جهاز كمبيوتر محلي (يمكن أن يكون هو نفسه أو جهاز كمبيوتر مختلفاً). بعد ذلك، أرسل مفتاح العامل الذي تم إنشاؤه في البوابة للعامل الذي يظهر على أنه غير متصل.
  • السبب. تم إيقاف خدمة SQL Data Sync.

  • الدقة. أعد تشغيل خدمة SQL Data Sync.

    1. في قائمة Start، ابحث عن Services.
    2. في نتائج البحث، حدد Services.
    3. ابحث عن خدمة SQL Data Sync.
    4. إذا كانت حالة الخدمة هي Stopped، فانقر بزر الماوس الأيمن فوق اسم الخدمة، ثم حدد Start.

ملاحظة

إذا كانت المعلومات السابقة لا تنقل مجموعة المزامنة الخاصة بك خارج حالة المعالجة، فيمكن لدعم Microsoft إعادة تعيين حالة مجموعة المزامنة الخاصة بك. لإعادة تعيين حالة مجموعة المزامنة الخاصة بك، في صفحة Microsoft Q&A لـAzure SQL Database، أنشئ مشاركة. في المنشور، قم بتضمين معرف الاشتراك ومعرف مجموعة المزامنة للمجموعة التي تحتاج إلى إعادة تعيين. سيرد مهندس دعم Microsoft على رسالتك، وسيخبرك عندما تمت إعادة تعيين الحالة.

أرى بيانات خاطئة في جداولي

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

  • السبب. تستخدم عملية توفير SQL Data Sync نفس جداول التعقب للجداول التي لها نفس الاسم ولكنها موجودة في مخططات مختلفة. لهذا السبب، تنعكس التغييرات من كلا الجدولين في نفس جدول التتبع. يؤدي هذا إلى تغييرات خاطئة في البيانات أثناء المزامنة.

  • الدقة. تأكد من اختلاف أسماء الجداول المتضمنة في المزامنة، حتى إذا كانت الجداول تنتمي إلى مخططات مختلفة في قاعدة بيانات.

أرى بيانات مفتاح أساسي غير متسقة بعد المزامنة الناجحة

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

  • السبب. هذه النتيجة حسب التصميم. تؤدي التغييرات في أي عمود مفتاح أساسي إلى بيانات غير متسقة في الصفوف التي تم فيها تغيير المفتاح الأساسي.

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

أرى انخفاضاً ملحوظاً في الأداء

يتدهور أداؤك بشكل كبير، ربما لدرجة أنه لا يمكنك حتى فتح واجهة مستخدم Data Sync.

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

  • الدقة. أفضل حل هو الوقاية. تأكد من عدم وجود مراجع دائرية في مجموعات المزامنة. لا يمكن مزامنة أي صف تمت مزامنته بواسطة مجموعة مزامنة بواسطة مجموعة مزامنة أخرى.

أرى هذه الرسالة: "Cannot insert the value NULL into the column <column>. Column does not allow nulls." فماذا يعني هذا، وكيف يمكنني إصلاحه؟

تشير رسالة الخطأ هذه إلى حدوث إحدى المشكلتين التاليتين:

  • لا يحتوي الجدول على مفتاح أساسي. لإصلاح هذه المشكلة، أضف مفتاحاً أساسياً لجميع الجداول التي تقوم بمزامنتها.
  • هناك جملة WHERE في عبارة CREATE INDEX الخاصة بك. لا تتعامل Data Sync مع هذا الشرط. لإصلاح هذه المشكلة، قم بإزالة جملة WHERE أو قم بإجراء التغييرات يدوياً على جميع قواعد البيانات.

كيف تتعامل Data Sync مع المراجع الدائرية؟ أي عندما تتم مزامنة البيانات نفسها في مجموعات مزامنة متعددة، وتتغير نتيجة لذلك؟

لا تتعامل Data Sync مع المراجع الدائرية. تأكد من تجنبها.

مشكلات عامل العميل

لاستكشاف مشكلات عامل العميل وإصلاحها، راجع استكشاف مشكلات عامل مزامنة البيانات وإصلاحها.

مشكلات الإعداد والصيانة

تظهر لي رسالة "نفدت المساحة على القرص"

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

  • الدقة. اشطب يدوياً ملفات المزامنة الموجودة في المجلد٪ temp٪ (del \*sync\* /s). بعد ذلك، اشطب الدلائل الفرعية الموجودة في المجلد٪ temp٪.

هام

لا تشطب أي ملفات أثناء إجراء المزامنة.

لا يمكنني شطب مجموعة المزامنة الخاصة بي

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

  • السبب. عامل العميل غير متصل.

  • الدقة. تأكد من اتصال عامل العميل بالإنترنت ثم حاول مرة أخرى.

  • السبب. عامل العميل غير مثبت أو مفقود.

  • الدقة. إذا تم إلغاء تثبيت عامل العميل أو فقده بطريقة أخرى:
    أ. قم بإزالة ملف XML العامل من مجلد تثبيت SQL Data Sync، إذا كان الملف موجوداً.
    ب. قم بتثبيت العامل على جهاز كمبيوتر محلي (يمكن أن يكون هو نفسه أو جهاز كمبيوتر مختلفاً). بعد ذلك، أرسل مفتاح العامل الذي تم إنشاؤه في البوابة للعامل الذي يظهر على أنه غير متصل.

  • السبب. قاعدة البيانات غير متصلة.

  • الدقة. تأكد من أن جميع قواعد البيانات الخاصة بك على الإنترنت.

  • السبب. مجموعة المزامنة هي إدارة الحسابات أو المزامنة.

  • الدقة. انتظر حتى تنتهي عملية التوفير أو المزامنة ثم أعد محاولة شطب مجموعة المزامنة.

لا يمكنني إلغاء تسجيل قاعدة بيانات SQL Server

  • السبب. على الأرجح، أنت تحاول إلغاء تسجيل قاعدة بيانات تم شطبها بالفعل.

  • الدقة. لإلغاء تسجيل قاعدة بيانات SQL Server، حدد قاعدة البيانات ثم حدد Force Delete.

    إذا فشلت هذه العملية في إزالة قاعدة البيانات من مجموعة المزامنة:

    1. أوقف خدمة مضيف عامل العميل ثم أعد تشغيلها:
      أ. حدد قائمة Start.
      ب. في مربع البحث، أدخل services.msc.
      ج. في قسم Programs بجزء نتائج البحث، انقر نقراً مزدوجاً فوق Services.
      د. انقر بزر الماوس الأيمن فوق خدمة SQL Data Sync.
      هـ. إذا كانت الخدمة قيد التشغيل، فقم بإيقافها.
      و. انقر بزر الماوس الأيمن فوق الخدمة، ثم حدد Start.
      ز. تحقق مما إذا كانت قاعدة البيانات لا تزال مسجلة. إذا لم يعد مسجلاً، فقد انتهيت. خلاف ذلك، تابع إلى الخطوة التالية.
    2. افتح تطبيق عامل العميل (SqlAzureDataSyncAgent).
    3. حدد Edit Credentials، ثم أدخل بيانات الاعتماد لقاعدة البيانات.
    4. المضي قدما في إلغاء التسجيل.

ليس لدي الامتيازات الكافية لبدء خدمات النظام

  • السبب. يحدث هذا الخطأ في حالتين:

    • اسم المستخدم و/أو كلمة المرور غير صحيحة.
    • لا يمتلك حساب المستخدم المحدد الامتيازات الكافية لتسجيل الدخول كخدمة.
  • الدقة. منح بيانات اعتماد تسجيل الدخول كخدمة لحساب المستخدم:

    1. انتقل إلى ابدأ>لوحة التحكم>أدوات إدارية>نهج الأمان المحلي>محلي النهج>المستخدم Microsoft Azure AD Rights Management.
    2. حدد Log on as a service.
    3. في مربع الحوار Properties، أضف حساب المستخدم.
    4. حدد Apply، ثم حدد OK.
    5. أغلق كل النوافذ.

قاعدة البيانات بحالة "قديمة"

  • السبب. يقوم SQL Data Sync بإزالة قواعد البيانات التي كانت غير متصلة بالإنترنت من الخدمة لمدة 45 يوماً أو أكثر (بناءً على حساب الوقت الذي أصبحت فيه قاعدة البيانات غير متصلة). إذا كانت قاعدة البيانات في وضع عدم الاتصال لمدة 45 يوماً أو أكثر ثم عادت إلى الاتصال بالإنترنت، فإن حالتها هي قديمة.

  • الدقة. يمكنك تجنب الحالة قديمة عن طريق التأكد من عدم توقف أي من قواعد البيانات الخاصة بك عن العمل لمدة 45 يوماً أو أكثر.

    إذا كانت حالة قاعدة البيانات هي قديمة:

    1. قم بإزالة قاعدة البيانات التي بها الحالة قديمة من مجموعة المزامنة.
    2. أضف قاعدة البيانات مرة أخرى إلى مجموعة المزامنة.

    تحذير

    ستفقد جميع التغييرات التي تم إجراؤها على قاعدة البيانات هذه عندما كانت غير متصلة بالإنترنت.

حالة مجموعة المزامنة "قديمة"

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

  • الدقة. لتجنب حالة قديم لمجموعة مزامنة، قم بفحص نتائج مهام المزامنة في عارض السجل بشكل منتظم. تحقق من أي تغييرات لا يمكن تطبيقها وحلها.

    إذا كانت حالة مجموعة المزامنة هي قديمة، فاشطب مجموعة المزامنة ثم أعد إنشاءها.

لا يمكن شطب مجموعة المزامنة خلال ثلاث دقائق من إلغاء تثبيت العامل أو إيقافه

لا يمكنك شطب مجموعة مزامنة خلال ثلاث دقائق من إلغاء تثبيت أو إيقاف عامل عميل SQL Data Sync المرتبط.

  • الدقة.

    1. قم بإزالة مجموعة مزامنة أثناء اتصال وكلاء المزامنة المرتبطين (موصى به).
    2. إذا كان العامل غير متصل بالإنترنت ولكن تم تثبيته، فقم بإحضاره عبر الإنترنت على الكمبيوتر المحلي. انتظر حتى تظهر حالة العامل كـ متصل في مدخل SQL Data Sync. ثم قم بإزالة مجموعة المزامنة.
    3. إذا كان العامل غير متصل بالإنترنت بسبب إلغاء تثبيته:
      أ. قم بإزالة ملف XML العامل من مجلد تثبيت SQL Data Sync، إذا كان الملف موجوداً.
      ب. قم بتثبيت العامل على جهاز كمبيوتر محلي (يمكن أن يكون هو نفسه أو جهاز كمبيوتر مختلفاً). بعد ذلك، أرسل مفتاح العامل الذي تم إنشاؤه في البوابة للعامل الذي يظهر على أنه غير متصل.
      ج. حاول شطب مجموعة المزامنة.

ماذا يحدث عندما أستعيد قاعدة بيانات مفقودة أو تالفة؟

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

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

لمزيد من المعلومات عن SQL Data Sync، راجع:

لمزيد من المعلومات عن قاعدة بيانات SQL، راجع: