إصلاح: ظهور رسائل خطأ نفاد الذاكرة عند استخدام دمج النسخ المتماثل باستخدام المزامنة ويب في SQL Server 2005 أو في SQL Server 2008

الأعراض

يمكنك استخدام SQL Server 2005 نسخ متماثل للدمج أو بناء SQL Server 2008 دمج النسخ المتماثل مع مزامنة ويب المشترك. حدوث تسرب لذاكرة بعد عمليات المزامنة المتكررة وقد تتلقى أخطاء "نفاد الذاكرة" بعد فترة من الوقت. يصبح هذا ملحوظا عندما لا يتم إعادة تشغيل عملية المضيف لفترة طويلة، مثل استخدام "دمج عامل" (Replmerg.exe) مع رمز التبديل المستمر-أو عندما يتم تعيين معلمة المستمر في التشكيل "الجانبي عامل" تطبيق العامل. كما يمكن أن تؤثر هذه المشكلة على توفير الموارد التطبيق أو الخدمة الذي قمت بإعداده تشغيل المزامنة في حلقة عند تشغيل التطبيق لعدة أيام دون إنهاء.

السبب

تسربت عدة كائنات داخلية عند كل المزامنة.

الحل

SQL Server 2005 Service Pack 3


تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في 6 التحديث التراكمي ل SQL Server 2005 Service Pack 3. لمزيد من المعلومات حول حزمة التحديث التراكمي هذه، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
974648 التراكمية تحديث حزمة 6 ل SQL Server 2005 Service Pack 3
ملاحظة: لأن البنيات تراكمية، يحتوي كل إصدار إصلاح جديد على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة. توصي Microsoft بمراعاة تطبيق أحدث إصدار للإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
960598 SQL Server 2005 البنيات التي تم إصدارها بعد إصدار SQL Server 2005 Service Pack 3.
يتم إنشاء الإصلاحات العاجلة ل Microsoft SQL Server 2005 لحزم خدمة SQL Server معينة. يجب تطبيق إصلاح عاجل SQL Server 2005 Service Pack 3 لتثبيت SQL Server 2005 Service Pack 3. بشكل افتراضي، يتم تضمين أي إصلاح جديد قد يتوفر في حزمة خدمـات لـ SQL Server في حزمة خدمـات لـ SQL Server التالية.

إصدار SQL Server 2008

هام: يجب تثبيت هذا الإصلاح إذا كنت تستخدم نسخة إصدار SQL Server 2008.

تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في 8 التحديث التراكمي. لمزيد من المعلومات حول كيفية الحصول على حزمة التحديث التراكمي ل SQL Server 2008، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
975976 التراكمية حزمة 8 تحديث ل SQL Server 2008
ملاحظة: لأن البنيات تراكمية، يحتوي كل إصدار إصلاح جديد على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2008 السابقة. نوصي بأن تنظر في تطبيق أحدث إصدار للإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
956909 بناء SQL Server 2008 التي تم إصدارها بعد إصدار SQL Server 2008

SQL Server 2008 Service Pack 1

هام: يجب تثبيت هذا الإصلاح إذا كنت تستخدم SQL Server 2008 Service Pack 1.


تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في 5 التحديث التراكمي ل SQL Server 2008 Service Pack 1. لمزيد من المعلومات حول حزمة التحديث التراكمي هذه، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
975977 التراكمية حزمة 5 تحديث ل SQL Server 2008 Service Pack 1
ملاحظة: لأن البنيات تراكمية، يحتوي كل إصدار إصلاح جديد على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2008 السابقة. توصي Microsoft بمراعاة تطبيق أحدث إصدار للإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
970365 بناء SQL Server 2008 التي تم إصدارها بعد إصدار SQL Server 2008 Service Pack 1
يتم إنشاء الإصلاحات العاجلة ل Microsoft SQL Server 2008 لحزم خدمة SQL Server معينة. يجب تطبيق إصلاح عاجل SQL Server 2008 Service Pack 1 لتثبيت SQL Server 2008 Service Pack 1. بشكل افتراضي، يتم تضمين أي إصلاح جديد قد يتوفر في حزمة خدمـات لـ SQL Server في حزمة خدمـات لـ SQL Server التالية.

الحالة

أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".

الحل البديل

للتغلب على هذه المشكلة، استخدم إحدى الطرق التالية:

الطريقة الأولى

إذا كنت تستخدم عامل دمج في وضع المستمر، إيقاف عملية عامل دمج دورياً، وتشغيله مرة أخرى.

على سبيل المثال، تتلقى أخطاء "نفاد الذاكرة" بعد خمسة أيام، و "دمج عامل" معد كمهمة. ثم جدولة مهمة عميل SQL Server جديدة لاستدعاء sp_stop_job متبوعاً sp_start_job تحديد اسم مهمة "دمج عامل" الخاص بك الذي سيتم دورة العملية المتأثرة كل خمسة أيام. عند إيقاف عملية "دمج عامل" (Replmerg.exe)، سيتم إصدار أي تسرب الذاكرة داخل مساحة ذاكرة العملية.

لمزيد من المعلومات حول استخدام رمز التبديل-مستمر على "دمج عامل"، راجع موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:

الطريقة الثانية

إذا كنت تستخدم عامل دمج من مهمة، يمكن تكوين منطق الحلقات اليدوية داخل الوظيفة باستخدام خطوات إضافية بدلاً من الاعتماد على المعلمة المستمر. بدلاً من تكرار داخليا إلى الأبد باستمرار عملية دمج واحد عامل، جدولة "عامل الدمج" كخطوة مهمة تتكرر بشكل متكرر مثل مرة واحدة كل دقيقة. سيتم إنهاء العملية بين المحاولات وهذا يحرر أي تسرب الذاكرة.
تحرير "عامل دمج" مهمة حيث أنه كرر الخطوات في حلقة بإيقاف مؤقت بين تكرار.
  1. بعد الخطوة [3] "الكشف عن إيقاف تشغيل عامل nonlogged،" إضافة خطوة جديدة [4] المسماة "حلقة" إعادة المحاولة "إلى أجل غير مسمى". تعيين النوع TSQL والأمر "تأخير waitfor' 0: 00:05 '"، سيوفر هذا التأخير TSQL مؤقتاً ثاني 5 تكوين كفاصل استقصاء بطريقة أن عامل دمج سوف توقف لمدة قصيرة بين عمليات التنفيذ ولا يعمل باستمرار. في التبويب خيارات متقدمة تحديد "على نجاح عمل" ك "انتقل إلى الخطوة عامل التشغيل [2]" و "فشل الإجراء" ك "اذهب إلى عامل تشغيل الخطوة [2]."
  2. تحرير "عامل تشغيل" الخطوة [2] لضمان الوصول إلى الحلقة خطوة [4]. في التبويب خيارات متقدمة خطوة [2]، بتعيين إجراء النجاح على "انتقل إلى الخطوة: [4] حلقة" إعادة المحاولة "إلى أجل غير مسمى" وتعيين الإجراء الفشل على "الانتقال إلى الخطوة التالية".
  3. تحرير الخطوة [3] "إيقاف تشغيل nonlogged عامل كشف" للتأكد من الوصول إلى الحلقة في الخطوة [4]. في التبويب خيارات متقدمة خطوة [3]، بتعيين "إجراء النجاح على"، "انتقل إلى الخطوة التالية". يمكنك أيضا أن تقرر إذا كنت تريد الخطوة [3] "على فشل الإجراء" تعيين "انتقل إلى الخطوة التالية" أو "إنهاء مهمة الإبلاغ عن الفشل". إذا كان مكوناً لإنهاء، سوف تظهر فشل مهمة في مراقبة النسخ المتماثل ومراقبة المهمة. إذا تم تكوينه عند الفشل للانتقال إلى الخطوة الحلقة الرابعة، قد أعد تشغيل عامل دمج إلى أجل غير مسمى، وتسجيل الأخطاء إلى أجل غير مسمى.

الطريقة الثالثة

وبالمثل إذا كنت تستخدم تطبيق توفير الموارد لاستدعاء الأسلوب MergeSynchronizationAgent.Synchronize() الذي يقوم بمزامنة قاعدة بيانات المشترك في حلقة، إيقاف وإعادة العملية بشكل دوري لتحرير الذاكرة التي تسربت بسبب هذه المشكلة.
لمزيد من المعلومات حول هذا الكائن والأسلوب، راجع موقع شبكة مطوري Microsoft (MSDN) التالي على الويب: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

المراجع

لمزيد من المعلومات حول كيفية استخدام رمز التبديل المستمر-على "عامل دمج"، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
لمزيد من المعلومات حول الإجراء sp_stop_job المخزنة، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
لمزيد من المعلومات حول الإجراء sp_start_job المخزنة، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
لمزيد من المعلومات حول كيفية الحصول على SQL Server 2005 Service Pack 3، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

كيفية الحصول على أحدث حزمة خدمة ل SQL Server 2005 913089

لمزيد من المعلومات حول الميزات الجديدة في SQL Server 2005 Service Pack 3 (SP3) وحول التحسينات الموجودة في SQL Server 2005 SP3، قم بزيارة موقع Microsoft التالي على الويب:لمزيد من المعلومات حول مخطط التسمية لتحديثات SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

حزم تحديث مخطط تسمية جديدة 822499 لبرامج Microsoft SQL Server

لمزيد من المعلومات حول مصطلحات تحديث البرامج، انقر فوق رقم المقال التالي لعرضه في "قاعدة معارف Microsoft":
824684 وصف للمصطلحات القياسية المستخدمة في وصف تحديثات برامج Microsoft
خصائص

رقم الموضوع: 974660 - آخر مراجعة: 12‏/01‏/2017 - المراجعة: 1

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup

تعليقات