سؤال

لدي حل Visual Studio 2008 مع مشروعين (مشروع Word-Template وتطبيق وحدة تحكم VB.Net للاختبار).يشير كلا المشروعين إلى مشروع قاعدة بيانات يفتح اتصالاً بملف قاعدة بيانات MS-Access 2007 وله مراجع إلى System.Data.OleDb.في مشروع قاعدة البيانات لدي وظيفة تقوم باسترداد جدول البيانات على النحو التالي

 private class AdminDatabase
   ' stores the connection string which is set in the New() method
   dim strAdminConnection as string

   public sub New()
   ...
   adminName = dlgopen.FileName
   conAdminDB = New OleDbConnection
   conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
       "Provider=Microsoft.ACE.OLEDB.12.0"

   ' store the connection string in strAdminConnection
   strAdminConnection = conAdminDB.ConnectionString.ToString()
   My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
   ...
   End Sub

   ' retrieves data from the database
   Public Function getDataTable(ByVal sqlStatement As String) As DataTable
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Dim localCon As New OleDbConnection


        localCon.ConnectionString = strAdminConnection

        Using localCon
            Dim command As OleDbCommand = localCon.CreateCommand()
            command.CommandText = sqlStatement
            localCon.Open()
            da.SelectCommand = command
            da.Fill(dt)
            getDataTable = dt
        End Using

    End Function
End Class

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

ex = {"مزود" microsoft.ace.oledb.12.0 "غير مسجل على الجهاز المحلي."}

كلا المشروعين لهما نفس المرجع وكان تطبيق وحدة التحكم يعمل عندما كتبته لأول مرة (منذ فترة) ولكنه توقف عن العمل الآن.يجب أن أفتقد شيئًا ما ولكني لا أعرف ما هو.أيه أفكار؟

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

المحلول

ولدي برنامج Visual Basic مع Visual Studio 2008 يستخدم قاعدة بيانات Access 2007 وكان يتلقى نفس الخطأ. لقد وجدت بعض المواضيع التي نصح تغيير التكوين الترجمة المتقدمة لX86 وجدت في خصائص البرامج إذا كنت تستخدم نظام 64 بت. وحتى الآن لم تتح لي أي مشاكل مع برنامجي منذ ذلك الحين.

نصائح أخرى

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

1) ضمان أن يتم تثبيت مشغل قاعدة بيانات عام 2007، وهذا يمكن أن يتم تحميلها على العنوان التالي: http://www.microsoft.com /downloads/details.aspx؟FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) مفتوحة مدير IIS7، وفتح المجال تجمعات التطبيقات. على الشريط الجانبي الأيمن، سترى الخيار الذي يقول "تعيين افتراضيات تجمع التطبيقات". فوق ذلك، وسوف نافذة منبثقة مع الخيارات.

و3) ربما يتم تعيين الحقل الثاني لأسفل، والتي تقول "تمكين تطبيقات 32 بت" إلى FALSE افتراضيا. ببساطة انقر حيث تقول "كاذبة" لتغييره إلى 'true'.

و4) إعادة تشغيل تجمع التطبيقات الخاص بك (يمكنك القيام بذلك عن طريق ضرب RECYCLE بدلا من إيقاف ثم START، التي ستعمل أيضا).

و5) القيام به، وسوف رسالة الخطأ بك يذهب بعيدا.

هل يعمل على نظام 64 بت مع قاعدة البيانات التي تعمل 32 بت ولكن وحدة تشغيل 64 بت؟ لا توجد السائقين MS Access الذي تشغيل 64 بت و سيقدم تقريرا خطأ مطابق لديك واحدة عنها.


حل:

هذا كل شيء!شكرا أرجون بوديل على الرابط.إليك الحل كما هو موجود في XNA Creator's Club Online.إنه من تأليف ستيفن ستيرتشاك.

يوحي لي الخطأ التالي بالاعتقاد بأنك تقوم بالتجميع لـ 64 بت:

لم يتم تسجيل موفر "Microsoft .ACE.OELDB.12.0" على الجهاز المحلي

ليس لدي إصدار سريع ولكن هل الخطوات التالية صالحة في 2008 Express؟

http://forums.xna.com/forums/t/4377.aspx#22601

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
- أرجون بوديل


في VC# Express, ، هذه الخاصية مفقودة، ولكن لا يزال بإمكانك إنشاء تكوين x86 إذا كنت تعرف المكان الذي تبحث فيه.

تبدو وكأنها قائمة طويلة من الخطوات، ولكن بمجرد أن تعرف مكان هذه الأشياء، يصبح الأمر أسهل كثيرًا.أي شخص لديه فقط VC# Express من المحتمل أن تجد هذا مفيدًا.بمجرد أن تعرف عن Configuration Manager, ، سيكون الأمر أكثر سهولة في المرة القادمة.

1.في VC# Express 2005، انتقل إلى Tools -> Options.
2. في الزاوية السفلية اليسرى من مربع حوار الخيارات، حدد المربع الذي يقول، "Show all settings".
3. في عرض الشجرة على الجانب الأيسر، حدد "Projects and Solutions".
4. في الخيارات الموجودة على اليمين، حدد المربع الذي يقول، "Show advanced build configuraions."
5.انقر OK.
6.اذهب إلى Build -> Configuration Manager...
7. في عمود النظام الأساسي بجوار مشروعك، انقر فوق مربع التحرير والسرد وحدد "<New...>".
8. في "New platform" setting, choose "x86".
9.انقر OK.
10.انقر Close.
هناك، الآن لديك تكوين x86!سهلة مثل الفطيرة!:-)

أوصي أيضًا باستخدام Configuration Manager لحذف النظام الأساسي لأي وحدة المعالجة المركزية.أنت حقًا لا تريد ذلك إذا كان لديك تبعيات على مكتبات DLL الأصلية 32 بت (حتى التبعيات غير المباشرة).

ستيفن ستيرشاك | مطور XNA Game Studiohttp://forums.xna.com/forums/p/4377/22601.aspx#22601


واعتقدت أن تتناغم لأنني وجدت هذا السؤال عندما تواجه سياق مختلف قليلا من المشكلة، ويعتقد أنها قد تساعد في النفوس المعذبة أخرى في المستقبل:

وكان التطبيق ASP.NET استضافتها على IIS 7.0 يعمل على ويندوز سيرفر 2008 64 بت.

ومنذ IIS في السيطرة على bitness العملية، كان الحل في حالتي لضبط Enable32bitAppOnWin64 الإعداد لصحيح: <وأ href = "http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit -applications على رأس نفسه، server.aspx "يختلط =" نوفولو noreferrer "> http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you- يمكن الآن-32-بت و64 بت التطبيقات على رأس نفس تشغيل---server.aspx

وكان يعمل بشكل مختلف قليلا في IIS 6.0 (لا يمكنك تعيين Enable32bitAppOnWin64 في مستوى تجمع التطبيقات) HTTP: //www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx؟mfr=true

وأواجه نفس المشكلة. أحاول تثبيت أوفيس 2010 64BIT على ويندوز 7 64 بت ثم قم بتثبيت 2007 سائق نظام المكتب: مكونات اتصال البيانات

وبعد ذلك، استوديو البصرية 2008 يمكن فتح اتصال إلى ملف قاعدة البيانات MS-2007 الوصول.

وانظر منصبي على غرار https://stackoverflow.com/a/21455677/1368849

وكان لي نسخة 15 وليس 12 المثبتة، التي اكتشفت عن طريق تشغيل هذا الرمز بوويرشيل ...

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

... الذي أعطاني هذه النتيجة (لقد إزالة مصادر البيانات الأخرى الإيجاز) ...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

ولقد حصلت على نفس خطأ على محدثة بالكامل 64BIT ويندوز فيستا الأسرة مع تطبيق. NET أنني قمت بتجميع إلى 32 بت فقط - تثبيت البرنامج في المجلد programx86 على 64 آلات قليلا. أنه فشل مع رسالة الخطأ هذه حتى مع عام 2007 مزود الوصول إلى قاعدة البيانات المثبتة، مع / wiothout وSP2 من نفس تثبيت، تثبيت IIS وتجمع التطبيقات تعيين لدعم 32BIT والتطبيق ... نعم لقد حاولت كل الحلول في كل مكان وحتى الآن أي نجاح.

وأنا تحولت بلدي التطبيق إلى ACE OLE DB.12.0 لJET4.0 كانت فاشلة على الأجهزة 64BIT - وانها ليست أفضل: - / وكان موضوع الواعدة لقد وجدت هذا:

<وأ href = "http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/" يختلط = " noreferrer نوفولو "> http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/

ولكن عند محاولة تثبيت 64 بت "2010 نظام Office سائق بيتا: مكونات اتصال البيانات" فإنه يقول لك أنه لا يمكنك تثبيت الإصدار 64 بت بدون إلغاء تثبيت جميع التطبيقات المكتبية 32BIT و... وتثبيت 32 بت نسخة عام 2010 نظام Office سائق بيتا: مكونات اتصال البيانات لا يحل المشكلة الأولي، حتى مع "Microsoft.ACE.OLEDB.12.0" كمزود بدلا من "Microsoft.ACE.OLEDB.14.0" التي تلك الصفحة (وغيرها) يوصي.

ومحاولتي القادمة ستكون لمتابعة هذا المنصب:

والمسألة هي نتيجة لنكهة خاطئة من OLEDB32.DLL وOLEDB32r.DLL يتم تسجيله على الخادم. إذا تم تسجيل إصدارات 64 بت، فإنها تحتاج إلى أن تكون غير مسجلة، وبعد ذلك إصدارات 32 بت تسجيل بدلا من ذلك. لحل هذه المشكلة، إلغاء تسجيل الإصدارات الموجود في٪ البرنامج Files٪ / الملفات المشتركة / النظام / OLE DB. ثم تسجيل الإصدارات في نفس الطريق ولكن في ملفات (x86) و الدليل٪ البرنامج٪.

لقد كان أي شخص آخر الكثير من المتاعب مع كل JET4.0 وOLEDB مقدمي ACE على أجهزة 64 بت؟ وقد أي شخص التوصل إلى حل إذا كان أي من الآخرين العمل؟

أفترض أنه إذا كنت تقوم بتشغيل نظام 64 بت مع قاعدة بيانات 32 بت وتحاول تشغيل وحدة تحكم 64 بت، فيجب تثبيت الحزم التالية على الجهاز.

  1. تثبيت Microsoft Access Database Engine 2010 x86 القابلة لإعادة التوزيع ، يتوفر هذا التثبيت على:http://www.microsoft.com/download/en/details.aspx?id=13255 .
  2. مكونات اتصال البيانات في Office 2007 ، يتوفر هذا التثبيت على:http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .
  3. محرك قاعدة بيانات Microsoft Access 2010 x64 قابل لإعادة التوزيع.ستحتاج إلى تنزيل الحزمة محليًا وتشغيلها بعلم سلبي.يمكنك تنزيل التثبيت هنا:http://www.microsoft.com/en-us/download/details.aspx?id=13255التثبيت باستخدام موجه الأوامر مع العلامة "/ السلبي".في موجه الأوامر قم بتشغيل الأمر التالي:"AccessDatabaseEngine_x64.exe/passive"

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

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