سؤال

قد أسأل السؤال الخطأ هنا، أنا على استعداد لتغييره إذا كان الأمر كذلك.

لدي مشروع يستخدم Microsoft.NET Oracle Provider (خطتنا للتغيير إلى ODP لكننا لم نفعل ذلك حتى الآن).

أحاول الحصول على هذا المشروع للبناء على خادم بنظام Windows 2008 (x64). يبني بشكل جيد ولكن اختبارات الوحدة لدينا تفشل عند ضرب الأشياء على قاعدة بيانات Oracle.

لقد قمت في البداية بتثبيت عميل 32bit Oracle 9i وهو ما نستخدمه حاليا في صناديق WinXP الخاصة بنا وخادم بناء 2003 السابق. ولكن الآن هذا يحصل على رسالة مثل: محاولة تحميل Oracle Client Libraries ألقى BadImageFormateXception. ستحدث هذه المشكلة عند التشغيل في وضع 64 بت باستخدام مكونات عميل Oracle 32 بت مثبتة.

حاولنا الترجمة إلى منصة X86 ولكنها لم تغير رسالة الخطأ.

لدي الآن عميل 11G 64 بت مثبتا ولكني أحصل على رسالة تقول System.Data.oracleclient يتطلب إصدار برنامج عميل Oracle 8.1.7 أو أكبر.

إذن ما تثبيت أوراكل يجب أن أستخدمه؟

يحرر:

كنت قادرا على العمل. اتضح أنه كان الاختبار الذي يتسبب في المشكلة، من خلال إجبار nunit لتشغيل في وضع 32 بت: http://geelswithblogs.net/lance/archive/2006/12/28/102191.aspx. كنت قادرا على الحصول على الاختبارات للعمل باستخدام برنامج تشغيل 32 بت القديم. ستكون هذه إجابة كربي على السؤال لذلك أنا لا أستخدمه ولكن سيوصل بكل سرور الإجابة الصحيحة لأي شخص وضع بعض المعلومات الجيدة عند الانتقال إلى برامج تشغيل Oracle 64bit.

هل كانت مفيدة؟

المحلول

عندما يتعلق الأمر بأوراكل، أحب استخدامها Oracle Instant Client. :

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

يفحص ما هو الحد الأدنى من فصفة العميل المطلوبة لتوصيل C # إلى قاعدة بيانات Oracle؟ للمزيد من المعلومات. لمعرفة كيفية إعداد مشروع Visual Studio الذي سيعمل على X86 بالإضافة إلى أجهزة X64، تحقق من وظيفة مدونتي عميل Oracle Instant في Visual Studio.

نصائح أخرى

أضيف إجابة جديدة منذ ذلك الحين من هذا الخريف (2012) تتوفر بيتا الكود المدير في ODP. يرى هذا الرابط للمزيد من المعلومات. بالنسبة لنا مستقرة للغاية، ونحن نستخدمها في الإنتاج، وذلك أساسا بسبب هذه الأسباب:

  • لا يوجد تثبيت (باستثناء إطار الكيان حيث هناك حاجة إلى تسجيل بسيط)
  • إنه أصغر من النسخة غير المدارة، فإن البصمة حوالي 6 ميغابايت.
  • أنها ليست "حساسة بت"، أي أي وحدة المعالجة المركزية ستعمل في النهاية مع ODP :)
  • المزيد من الخرائط سهلة الاستخدام C # <-> أنواع Oracle (وحلت بعض المشكلات مع EF وتوليد النموذج من قاعدة البيانات)
  • يدعم EzConnect (جميع إصدارات ODP غير المدارة لم تفعل)، أي لا مزيد من المتاعب tnsnames.ora.

ولكن للانتقال إلى 64 بت، قم بتنزيل برنامج تشغيل ODP المداري وتغيير Oracle.DataAccess إشارة إلى Oracle.ManagedDataAccess وإعادة ترجمة :)

أعتقد الرسالة "System.Data.oracleclient يتطلب إصدار برنامج عميل Oracle 8.1.7 أو أكبر" انها مشابهة ل "Oracle Client غير مثبت، مثبتة ولكن غير موجود أو تثبيت ولكن هناك حاجة إلى 8.1.7 أو أكبر".

تحقق من regedit إذا كانت القيم مباشرة تحت المفتاح:

 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1

أين OraOdac11g_home1 يعتمد على اسم Oracle Home للتثبيت الخاص بك.

أيضا، حاول الاتصال من خلال Visual Studio لمعرفة ما إذا كان ذلك ممكنا.

كان لدي مشكلة يمكن أن تتعلق بما تراه.

لقد حصلت في البداية على عميل Oracle 10G مثبتا على جهازي و .NET Oracle.DataAccess رقم إصدار مكون 10.2.0.100 - كان هذا ل .NET وقت التشغيل V1.0.3705

لقد قمت بتثبيت ODP.NET وإصدار مكون ORACLE.DATAACCESS الآن V2.102.2.20 ويتم تشغيله على .NET Runtime V2.0727 - لا أستطيع العثور على المرجع لمعرفة لماذا فعلت Oracle هذا - كان الأمر يتعلق بإحضار أرقام الإصدار تمشيا مع إصدار وقت التشغيل

استغرق الأمر لي يوما للعمل. نحن لا نستخدم عميل 11G حتى الآن وأنا لم أستخدم عميل 8i للأعمار لذلك أنا لا أعرف ما هي أرقام الإصدار أن تكون لأولئك العملاء، لكنني أتحقق من ذلك لو كنت ماذا كنت.

باختصار، تتبع Oracle أرقام إصدار المكونات التي يمكن أن تجعل مكون 11G الخاص بك تظهر خارج تاريخ بدلا من مكونات Oracle 8i

لقد وجدت عدة مرات أن الخطأ "يتطلب إصدار برنامج عميل Oracle 8.1.7 أو أكبر" هو خطأ مضلل بشيء واضح. من ذاكرة بعيدة يبدو أنني أتذكر أن هذا يشير عادة إلى مشكلة في ملف أذونات IO. أعتقد أنه قد يتطلب عملية عامل ASP.NET (أو أي هوية يعمل تطبيق Under) نوعا من إذن القراءة أو الكتابة إلى مجلد في التسلسل الهرمي للمجلد العميل Oracle ...

هذا يمكن أن يكون سببا لعدة منازل أوراكل في البيئة. قم بإزالة الإصدار الأقدم Oracle Home في نظام البناء الخاص بك. حاول إنشاء بناء مرة أخرى مع المنزل الفردي. هناك بعض المشكلات مع النسخة 9i ODP.NET و 10G / 11G اتصال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top