أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

FIX: رسالة خطأ عند محاولة إدراج البيانات على مشترك في النسخ المتماثل دمج في SQL Server 2005: "رسالة 548 ، مستوى 16 حالة 2، سطر 1. فشل الإدراج"

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

اضغط هنا لرابط المقالة باللغة الانجليزية953481
الخطأ رقم: 50002854 (الإصلاح العاجل SQL)
Microsoft بتوزيع الإصلاحات Microsoft SQL Server 2005 كملف واحد القابلة للتحميل. لأن الإصلاحات تراكمية، يتضمن كل إصدار جديد كافة الإصلاحات العاجلة وأصلح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة الإصدار.
الأعراض
اطلع على السيناريو التالي. في SQL Server 2005 بتكوين منشور دمج. إضافة جدول يحتوي على عمود هوية إلى منشور دمج. ثم يتم إدراج بيانات في الجدول في الناشر. مزامنة البيانات بين المشترك الناشر ثم محاولة إدراج بيانات إضافية في الناشر. في هذا السيناريو، تظهر رسالة الخطأ التالية على الناشر:
msg مستوى 548 ، 16 حالة 2، السطر الأول
فشل الإدراج. تعارض مع هوية نطاق تحقق القيد في قاعدة البيانات ' DatabaseName ' ، الجدول المنسوخ ' Schema. TableName ' ، العمود ' ColumnName '. إذا تمت إدارة عمود تعريف تلقائياً بواسطة النسخ المتماثل, تحديث النطاق كما يلي: لـ Publisher، تنفيذ sp_adjustpublisheridentityrange; لـ المشترك ، تشغيل عامل توزيع أو عامل دمج.
إذا حاولت تشغيل sp_adjustpublisheridentityrange في الإجراء المخزن على الناشر كما ذكر في رسالة الخطأ "، لا يزال يتعذر حل هذه المشكلة.

تحدث هذه المشكلة عند مزامنة عدة "عوامل دمج" البيانات في نفس الوقت لمنشور دمج نفس. يمكن أن يكون exacerbated هذه المشكلة إذا كان لديك العديد من المشتركين في منشور دمج.
السبب
تحدث هذه المشكلة بسبب قيمة الهوية الحالية في الجدول في الناشر ليس ضمن نطاق هوية قيد تحقق من صحة هوية النطاق. يحدث هذا السلوك عند محاولة "عاملي دمج" عدة زيادة النطاق هوية في نفس الوقت عن طريق إنشاء نطاق هوية التالية على الناشر.
الحل
تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في التحديث التراكمي 8. لمزيد من المعلومات حول كيفية الحصول على حزمة التحديث التراكمي هذه لـ SQL Server 2005 المزود بحزمة الخدمة SP2 انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
951217حزمة التحديث التراكمي 8 SQL Server 2005 المزود بحزمة الخدمة SP2
ملاحظة لأن وبالطريقة تراكمية، يتضمن كل إصدار إصلاح جديد كافة الإصلاحات العاجلة وأصلح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة الإصدار. توصي Microsoft مراعاة تطبيق أحدث إصدار الإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
937137بناء SQL Server 2005 التي تم إصدارها بعد إصدار SQL Server 2005 المزود بحزمة الخدمة SP2
يتم إنشاء الإصلاحات العاجلة Microsoft SQL Server 2005 حزم خدمة SQL Server معينة. يجب تطبيق الإصلاح عاجل SQL Server 2005 المزود بحزمة الخدمة SP2 إلى تثبيت SQL Server 2005 المزود بحزمة الخدمة SP2. بشكل افتراضي، يتم تضمين الإصلاحات الجديدة المتوفرة في حزمة خدمة لـ SQL Server في حزمة خدمة لـ SQL Server التالية.
الحل البديل
كمحاولة للتغلب على هذه المشكلة يجب منع تزامن دمج المتزامنة متعددة. للقيام بذلك، قم بتعيين الخاصية max_concurrent_merge على منشور دمج بواسطة تشغيل العبارة التالية:
sp_changemergepublication '<PublicationName>', 'max_concurrent_merge', 1
ملاحظة بعد استخدام هذا الحل ، الأداء قد إنقاص إذا كان لديك العديد من المشتركين للمنشور. يحدث هذا السلوك بسبب مشترك واحد فقط يمكن مزامنة البيانات في كل مرة.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على".
معلومات أخرى

كيفية تحديد ما إذا كنت تواجه هذه المشكلة

لتحديد ما إذا كنت تواجه هذه المشكلة اتبع الخطوات التالية:
  1. تحقق من أن القيمة الهوية الحالية أصغر من الحد الأدنى للنطاق هوية الأول من قيد الهوية نطاق التحقق من الصحة.

    للحصول على القيمة الهوية الحالية ، تشغيل العبارة التالية:
    SELECT IDENT_CURRENT ('<TableName>')
    بالحصول على نطاقات هوية قيد تحقق من صحة هوية نطاق تشغيل أي من العبارات التالية:
    بيان 1
    sp_helpconstraint '<TableName>'
    العبارة 2
    select * from MSmerge_identity_rangewhere is_pub_range <>1AND artid IN  (select artid from sysmergearticles where name='<TableName>')AND subid in  (select subid from sysmergesubscriptions  MSjoin sysmergepublications MP on MS.subscriber_server=MP.publisherAND MS.db_name = MP.publisher_dbWHERE name='<PublicationName>')
  2. استخدم تتبع منشئ ملفات التعريف ملقم SQL لتحديد ما إذا كان يتم تشغيل executions وتعشيق من الإجراء sp_MSsetup_publisher_idrange تخزين قبل جلسات عمل "دمج عامل" منفصلة نفس المنشور.

    ومع ذلك، executions وتعشيق من الإجراء sp_MSsetup_publisher_idrange تخزين لا تشير دوماً إلى مواجهة هذه المشكلة. وهذا بسبب عدم تشغيل SQL Server منشئ ملفات التعريف عند إنشاء التكرار الأصلي للعنصر مزامنة دمج أول رسالة خطأ. ولكن، executions وتعشيق من الإجراء sp_MSsetup_publisher_idrange تخزين زيادة احتمال مواجهة هذه المشكلة.
  3. يمكنك العثور على تزامن دمج المتراكبة التي تحدث عند ظهور رسالة الخطأ "548". للقيام بذلك، يمكنك مراجعة محفوظات دمج في قاعدة بيانات التوزيع. للقيام بذلك، قم بتشغيل العبارات التالية: max(time)
    Use distributionGOselect session_id, agent_id, B.publication, min(time) as StartTime, max(time) as EndTimeinto #sessiontimesfrom dbo.MSmerge_history Ajoin dbo.msmerge_agents Bon A.agent_id = B.idgroup by session_id, agent_id, publicationorder by 3 descGO-- The left side result is the original session. The right side result is the overlapping session.select A.*, B.* from #sessiontimes AJoin #sessiontimes BOn B.StartTime >= A.StartTimeAND B.StartTime <= A.EndTimeAND A.session_id <> B.session_idAnd A.publication=B.publicationOrder By A.StartTime ascGOdrop table #sessiontimes

كيفية تصحيح الموجودة التالفة نطاقات هوية لجدول مشكوك

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

ملاحظة تتضمن هذه الخطوات يدويًا تجاوز قيمة أساس الهوية الحالية للجدول المراد reseed قيمة الهوية في الناشر بشكل صحيح. في حالة تلف القيمة الهوية الحالية أصغر من نطاق هوية الأول في قيد تحقق من صحة نطاق هوية دمج النسخ المتماثل. رفع الخطوات القيمة الهوية التي تقع داخل نطاق هوية معرفة بواسطة قيد تحقق من صحة النسخ المتماثل نطاق هوية الدمج يدوياً. تفترض هذه الخطوات أن الهويات قد تم تكوينها بطريقة تصاعدي وتم تكوينه الزيادة هوية لزيادة حسب قيمة 1.
  1. تأكد من أن قيمة الزيادة الهوية هي 1 تستمر عملية الهوية تصاعدي الطريقة. يمكنك الحصول على قيمة الزيادة الهوية بتشغيل العبارة التالية على الناشر:
    SELECT IDENT_INCR( '<TableName>')
  2. تشغيل العبارة التالية على Publisher العثور على قيمة الهوية الحالية على عمود تعريف مشكوك:
    DBCC CHECKIDENT ('<TableName>')
    بعد ظهور النتيجة لاحظ القيمة قيمة الهوية الحالية للمقارنة في خطوات فيما بعد. لاحظ أن valye قيمة العمود الحالي قد أكبر أو أصغر من القيمة قيمة الهوية الحالية.

    إذا كانت القيمة قيمة العمود الحالي أكبر من القيمة قيمة الهوية الحالية ، قيمة العمود قد يكون تم إنشاء في replications الأخرى في الطبولوجيا ثم دمج بنجاح مع النسخ المتماثل لـ Publisher. إذا كانت القيمة قيمة العمود الحالي أصغر من القيمة قيمة الهوية الحالية القيم قد تم إدراجها في الناشر في وقت سابق باستخدام ON IDENTITY_INSERT SET عبارة قبل تكوين النسخ المتماثل الدمج.
  3. تشغيل العبارات التالية على Publisher تحديد نطاقات الهوية الحالية في نطاق هوية تحقق قيد لجدول مشكوك: sp_helpconstraint
    Use <PublishedDatabaseName>GOsp_helpconstraint '<TableName>'GO
    بعد ظهور النتيجة لاحظ قيمة العمود constraint_keys سجل حيث هو قيمة العمود constraint_name "repl_identity_range_ GUID. قيمة GUID يطابق قيمة العمود artid المقالة في جدول النظام sysmergearticles. للحصول على GUID قم بتشغيل العبارة التالية:
    select artid from sysmergearticles where name = '<TableName>'
    قيد تحقق من صحة هوية نطاق يمتد نطاقين منفصلة. لا يلزم أن القريبة المجموعتين من النطاقات. على سبيل المثال، يمكن أن تكون قيمة العمود constraint_keys كما يلي:
    ([ColumnName] > (1001) و [ColumnName]<=(2001)
    OR [ColumnName] > (9001) و [ColumnName]<=(10001))
    ملاحظة تستخدم هذه المقالة هذا المثال لعرض التعليمات البرمجية في باقي الخطوات.

    في هذا المثال، تمتد النطاقات كل القيم 1,000. 1,000 هو حجم النطاق الافتراضي. ومع ذلك، يمكنك تغيير حجم نطاق الهوية باستخدام أحد الأساليب التالية:
    • تحديد @ pub_identity_range المعلمة عند تشغيل sp_addmergearticle في الإجراء المخزن.
    • تغيير خاصية حجم النطاق المشترك المقالة في مربع الحوار خصائص مقالة.
  4. في حالة مواجهة المشكلة الموضحة في قسم "الأعراض" ، يجب أن تكون قيمة الهوية الحالية الذي قمت بتدوينه في الخطوة 2 أصغر من الحد الأدنى للنطاق هوية الأول من قيد تحقق من صحة هوية النطاق الذي قمت بتدوينه في الخطوة 3.

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

    لمزيد من المعلومات حول الإجراء sp_adjustpublisheridentityrange تخزين قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
  5. تشغيل العبارة التالية لتحديد ما إذا كان هناك أية صفوف في نطاقات الهوية الحالية قيد تحقق من صحة هوية النطاق:
    SELECT COUNT(*) FROM TableName WHERE ([ColumnName]>(1001) AND [ColumnName]<=(2001) OR [ColumnName]>(9001) AND [ColumnName]<=(10001))
    الملاحظات
    • إذا كانت العبارة ترجع 0, أية صفوف في النطاقات الهوية الحالية. في هذه الحالة، انتقل إلى الخطوة 6.
    • إذا كانت العبارة ترجع قيمة أكبر من 0 تشغيل العبارة التالية للحصول على قيمة تعريف الحد الأقصى في النطاقات الهوية الحالية:
      SELECT MAX(ColumnName) as MaxValue FROM TableName WHERE ([ColumnName]>(1001) AND [ColumnName]<=(2001) OR [ColumnName]>(9001) AND [ColumnName]<=(10001))
      لاحظ القيمة التي تم إرجاعها ومن ثم انتقل إلى الخطوة 7.
  6. يدوياً reseed الهوية الحالية لجدول مشكوك تقع داخل نطاق صالح.

    reseed الهوية الحالية إلى أقل قيمة نطاقات الهوية الحالية بالإضافة إلى 1. على سبيل المثال، إذا كانت القيمة أقل من نطاقات الهوية الحالية 1001 أول قيمة في نطاق المحتملة لأنه 1002 يستخدم منخفضة نهاية نطاق قيد تحقق من صحة هوية نطاق أكبر من (&gt;). للقيام بذلك، قم بتشغيل العبارة التالية على الناشر ثم ثم انتقل إلى الخطوة رقم 8:
    DBCC CHECKIDENT ('TableName', RESEED, 1002)
  7. يدوياً reseed الهوية الحالية لجدول مشكوك تقع داخل نطاق صالح.

    يفترض أن زيادة الهوية هي 1. reseed الهوية الحالية إلى القيمة التي قمت بتدوينه في الخطوة 5 ثم قم بإضافة 1. على سبيل المثال، إذا كانت القيمة الذي قمت بتدوينه في الخطوة 5 1507 reseed الهوية الحالية إلى 1508. للقيام بذلك، قم بتشغيل العبارة التالية على الناشر:
    DBCC CHECKIDENT ('TableName', RESEED, 1508)
  8. قم بإجراء اختبار لتحديد ما إذا كانت صفوف جديدة يمكن إدراجها في الجدول في قاعدة بيانات ناشر دون حدوث خطأ 548.
للحصول على مزيد من المعلومات حول تغيير ما هي الملفات و للحصول على معلومات حول أية متطلبات مسبقة لتطبيق حزمة التحديث التراكمي الذي يحتوي على الإصلاح الجديد الموضح في مقالة "قاعدة المعارف لـ Microsoft" هذه انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
951217حزمة التحديث التراكمي 8 SQL Server 2005 المزود بحزمة الخدمة SP2
مراجع
للحصول على مزيد من المعلومات حول القائمة وبالطريقة التي تتوفر بعد حزمة الخدمة Service Pack 2 الخاصة بـ SQL Server انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
937137بناء SQL Server 2005 التي تم إصدارها بعد إصدار SQL Server 2005 المزود بحزمة الخدمة SP2
لمزيد من المعلومات حول "نموذج تقديم تزايدي" لـ SQL Server انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
935897يتوفر "نموذج تقديم تزايدي" من فريق SQL Server لتسليم الإصلاحات العاجلة لمشكلات تم الإبلاغ عنها
للحصول على مزيد من المعلومات حول كيفية الحصول على SQL Server 2005 المزود بحزمة الخدمة SP2 انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
913089كيفية الحصول على أحدث حزمة خدمة لـ SQL Server 2005
لمزيد من المعلومات حول الميزات الجديدة والتحسينات في SQL Server 2005 المزود بحزمة الخدمة SP2 قم بزيارة موقع Microsoft التالي على الويب:للحصول على مزيد من المعلومات حول مخطط التسمية لـ SQL Server التحديثات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
822499مخطط تسمية جديدة حزم تحديثات برامج Microsoft SQL Server
لمزيد من المعلومات حول مصطلحات تحديث البرامج "، انقر فوق رقم المقالة التالي لعرضها في" قاعدة المعارف لـ Microsoft:
824684وصف للمصطلحات القياسية المستخدمة في وصف تحديثات برامج Microsoft

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 953481 - آخر مراجعة: 07/11/2008 18:37:57 - المراجعة: 1.0

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

  • kbmt kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver kbautohotfix kbsql2005repl KB953481 KbMtar
تعليقات
&t=">/html>endChild(m); body>eElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> scope"> Paraguay - Español
Venezuela - Español
/html>4050&did=1&t=">mp;t=">1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("