الأعراض
على أجهزة الكمبيوتر 64 بت، قد يفشل التطبيق المستند إلى SQL Server Compact ("ضغط") بأحد الأعراض التالية:
الأعراض 1
يحاول التطبيق تحميل إصدار من Compact غير متوافق مع الإصدار المثبت على الكمبيوتر. قد تؤدي الإصدارات غير الصحيحة إلى عدم استقرار التطبيق وسيتم إحباط تحميل Compact.
الأعراض 2
لا يمكن للتطبيق تحميل المكونات الأصلية SQL Server Compact التي تتوافق مع موفر ADO.NET.
فيما يلي الاستثناءات الدقيقة المقترنة بهذه المشكلات:
ملاحظة
استثناء عدم تطابق الإصدار
تم الكشف عن عدم تطابق إصدار الملف بين موفر ADO.NET والثنائيات الأصلية SQL Server Compact مما قد يؤدي إلى وظيفة غير صحيحة. قد يكون هذا بسبب وجود مثيلات متعددة من SQL Server Compact من إصدارات مختلفة. يرجى تثبيت ثنائيات SQL Server Compact للإصدار المطابق [إصدار ملف موفر ADO.NET = XXXX، إصدار الملف الثنائي الأصلي = YYYY]
تعذر تحميل استثناء ME dll"
تعذر تحميل DLL 'sqlceme35.dll': تعذر العثور على الوحدة النمطية المحددة. (استثناء من HRESULT: 0x8007007E)
السبب
تبرمج التطبيقات المستندة إلى الضغط بشكل عام مقابل موفر ADO.NET المضغوط (System.Data.SqlServerCe.dll). يتصل هذا الموفر بدوره بمكونات Compact الأصلية. لتجنب التناقضات المختلفة، يمكن لموفر ضغط ADO.NET لإصدار معين التحدث فقط إلى المكونات الأصلية المضغوطة لنفس الإصدار. فيما يلي بعض نماذج السيناريوهات حيث سيتم كسر هذا النهج، وسينتج عن ذلك أحد الاستثناءين المذكورين سابقا:
مثال على السيناريو 1
تثبيت SQL Server 2008 R2 (يؤدي ذلك إلى تثبيت الإصدار 32 بت من SQL Server Compact 3.5 SP2). بعد ذلك، عند تشغيل تطبيق 64 بت ينشر بشكل خاص SQL Server Compact SP1، فإنه يفشل مع استثناء "عدم تطابق الإصدار".
سبب الفشل
- عند تثبيت الإصدار 32 بت من SQL Server Compact 3.5 SP2، فإنه يضيف موفر ADO.NET (System.Data.SqlServerCe.dll) من الإصدار 3.5.8080 إلى ذاكرة التخزين المؤقت للتجميع العمومي (GAC) ويتم وضع مكونات x86 الأصلية ضمن المجلد ٪Program Files(x86)٪.
- عند تشغيل التطبيق 64bit الذي ينشر بشكل خاص SQL Server Compact SP1، يتم تحميل موفر ADO.NET من GAC (الإصدار 3.5.8080) ولكن يتم تحميل مكونات 64bit الأصلية من مجلد التطبيق وهو الإصدار 3.5.5692.0.
- هناك عدم تطابق في الإصدار لم يتم تمكينه وفقا للنهج.
مثال على السيناريو 2
- يمكنك تثبيت إصدار x86 من SQL Server Compact 3.5 SP1 على كمبيوتر 64 بت.
- بعد ذلك، يمكنك تثبيت إصدار x64 من SQL Server Compact 3.5 SP1.
- على نفس الكمبيوتر، يمكنك تنزيل الإصدار 32 بت من SQL Server Compact 3.5 SP2 وتثبيته من الويب.
- يمكنك تشغيل تطبيق 64 بت يستخدم SQL Server Compact SP1 أو SP2.
- عند تشغيل التطبيق، فإنه يفشل مع استثناء "Unable to load ME dll".
سبب الفشل
- تثبيت الإصدار 32 بت من ترقيات SQL Server Compact 3.5 SP2 SQL Server Compact 3.5 SP1 x86 إلى SQL Server Compact 3.5 SP2. ينتج عنه تثبيت x86 ل Compact يختلف عن تثبيت x64.
- عند تشغيل تطبيق 64 بت يستخدم ضغط SP1 أو SP2 على الكمبيوتر، فإنه يقوم بتحميل موفر ADO.NET من GAC (الإصدار 3.5.8080). ومع ذلك، لا يمكن العثور على الثنائيات الأصلية لنفس الإصدار على النظام. لذلك، فإنه يطرح الاستثناء.
الدقة
في أي وقت، ستكون الحالة الصحيحة للكمبيوتر 64 بت، SQL Server Compact، كما يلي:
- يتم تثبيت كل من x86 وamd64 MSIs.
- كل من x86 و amd64 MSIs من نفس الإصدار.
لذلك، إذا واجهت أي مشكلات مماثلة، فتأكد من تثبيت كل من x86 وamd64 MSIs من Compact على الكمبيوتر وأنها من نفس الإصدار. في حالة عدم وجودها، قم بتثبيت Compact SP2 x86 وx64 MSIs من الارتباط التالي حسب الحاجة:
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".