ظهور رسالة خطأ عند مزامنة Microsoft Dynamics AX مع جدول في Microsoft SQL Server: "لا يمكن تنفيذ أمر لغة تعريف بيانات على [table_name]"

ينطبق على: Microsoft Dynamics AX 4.0Axapta Object Server

الأعراض


عند مزامنة Microsoft Dynamics AX مع جدول في Microsoft SQL Server، تتلقى رسالة الخطأ التالية:
لا يمكن تنفيذ أمر لغة تعريف بيانات على table_name. وقد أصدرت بقاعدة بيانات SQL خطأ.
بالإضافة إلى ذلك، يتم تسجيل رسالة خطأ مشابهة للرسالة التالية في سجل "التطبيق في عارض الأحداث" على الخادم خادم كائن التطبيق (AOS):
خادم كائن 01: (الدورة 1 (مسؤول)) الإبلاغ عن قاعدة البيانات: إنهاء [Microsoft] [SQL Server برنامج تشغيل ODBC] [SQL Server] "إنشاء فهرس فريد" لعدم العثور على مفتاح مكرر لاسم الكائن ' dbo. table_name'واسم الفهرس'I_xxxIDX'. هو قيمة مفتاح مكررة (value1, value2). تم تعديل عبارة SQL: "" إنشاء فهرس فريد " I_xxxIDX table_name (العمود 1والعمود 2)"
ملاحظة:
  • Table_name عنصر نائب لاسم الجدول.
  • I_xxxIDX عنصر نائب لاسم فهرس فريد.
  • نائب value1 ونائب value2 عبارة عن عناصر نائبة لقيم مفاتيح مكررة.
  • نائب العمود 1 و العمود 2 العنصر النائب من العناصر النائبة التي تمثل أسماء الأعمدة.

السبب


تحدث هذه المشكلة لأن قاعدة بيانات SQL Server استناداً إلى الفهارس الفريدة التي يحاول إنشاء Microsoft Dynamics AX أو محاولة إعادة إنشاء السجلات المكررة.

الحل


تنبيه قبل إزالة أية بيانات من قاعدة بيانات Microsoft Dynamics AX، يجب فهم لماذا يتم إضافة فهرس فريد جديد. بشكل عام، سيتم إضافة Microsoft Dynamics AX أو إزالة الفهارس عند وجود تغييرات مفاتيح الترخيص أو عند إضافة أو إزالة الوحدات النمطية في النموذج تكوين Microsoft Dynamics AX. بالإضافة إلى ذلك، يمكن إضافة الفهارس عندما المطورين بإضافة الفهارس من خلال شجرة مكونات البرنامج (AOT) أو من خلال عملية الترقية العادية. إذا لم تكن متأكداً من سبب إضافة الفهرس، يجب عدم إزالة البيانات.

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

لحل هذه المشكلة، قم بإزالة السجلات المكررة من جدول للسماح لفهرس فريد لإضافة أو تحديد ما إذا كان ينبغي إضافة فهرس فريد. للقيام بذلك، اتبع الخطوات التالية:
  1. على خادم AOS، انقر فوق ابدأ، ثم انقر فوق تشغيل، واكتب eventvwr.exeوثم انقر فوق موافق.
  2. في شجرة وحدة تحكم عارض الأحداث ، انقر فوق عقده التطبيق .
  3. عرض خطأ مفتاح مكرر التي تظهر أولاً في سجل التطبيق. للقيام بذلك، انقر نقراً مزدوجاً فوق خطأ ومصدر: "حيوية ملقم" 0x العنصر الذي يظهر في جزء التفاصيل.

    ملاحظة: X هو عنصر نائب لمثيل خدمة AOS بإرجاع رسالة الخطأ.
  4. استناداً إلى رسالة الإعلام بالخطأ التي يتم عرضها، استبدال اسم الجدول واسم العمود اسم الفهرس باستخدام القيم الموجودة في رسالة الخطأ في البرنامج النصي SQL Server الذي تستخدمه في الخطوة التالية.
  5. يتم استبدال بعد القيم من الخطأ الفعلي، بتشغيل البرنامج النصي SQL Server التالية في محلل استعلام SQL أو Studio إدارة ملقم SQL.
    select count(*) as Duplicate_Record_Count, <column1>, <column2> from <table_name> group by <column1>, <column2> having count(*) > 1 
    ملاحظة: استبدال العناصر النائبة بالمعلومات المناسبة عند تشغيل البرنامج النصي.
  6. لكل سجل يتم إرجاعها في الخطوة 5، يوجد سجل مكرر واحد على الأقل. الإشارة إلى عمود Duplicate_record_count يتم تكرار عدد السجلات باستخدام تلك القيم في فهرس. إذا تم العثور على سجلات التكرارات، يجب عليك تحديد ما إذا كان سيتم إزالة السجلات لإضافة فهرس فريد أو ما إذا كان ينبغي إضافة فهرس فريد. للبحث عن كافة السجلات المكررة، تشغيل البرنامج النصي التالي.
    select Distinct a.* from <table_name> a join (select <column1>, <column2> from <table_name> group by <column1>, <column2> having count(*) > 1) b
    on a.<column1> = b.<column1> and a.<column2> = b.<column2>

    ملاحظات
    • استبدل العناصر النائبة بالمعلومات المناسبة قبل تشغيل البرنامج النصي. يمكنك الحصول على المعلومات من رسالة الإعلام بالخطأ.
    • يمكنك استخدام العمود Recid كمعرّف مفتاح في كل جدول لتحديد أو لإزالة السجلات.
    • إذا كنت غير متأكد حول كيفية تشغيل البرامج النصية أو تفسير النتائج، يمكنك العمل مع مسؤول قاعدة بيانات مؤهل (DBA) ودعم فني لتحديد كيفية معالجة النتائج.
  7. كرر الخطوتين 5 و 6 حتى البرنامج النصي في الخطوة 5 بإرجاع قيمة فارغة تشير إلى أنه لا توجد قيم مكررة لا أكثر ويمكن إضافة فهرس فريد.
  8. إذا كان هناك أكثر من فهرس فريد لإضافة وعرض خطأ مفتاح مكرر التالية في تسجيل تطبيق عارض الأحداث، ومن ثم كرر الخطوات من 4 إلى 7 حتى يكون هناك أخطاء مفاتيح مكررة لا أكثر في تطبيق عارض سجل الأحداث.