Saya membuat aplikasi windows yang dikembangkan dalam. NET 3.5 di server Windows 2008 32 bit. Ketika digunakan aplikasi dalam server 64 bit itu menunjukkan kesalahan "penyedia Microsoft.Jet.OLEDB.4.0 'tidak terdaftar di mesin lokal".
Jadi sebagai solusi untuk masalah ini, saya telah mengubah properti build proyek menjadi X86, sehingga ia akan membangun dalam mode 32 bit, dan membangun kembali proyek di mesin 32bit. Tapi, proyek yang sama menggunakan driver DB lain (DB2, SQL dll.) Untuk terhubung ke database lain. Jadi ketika saya memasang aplikasi saya lagi di OS 64 bit, itu melempar pengecualian "Mencoba memuat perakitan 64-bit pada platform 32-bit."
Saya menggunakan driver Microsoft.Jet.OLEDB.4.0 untuk membaca dan menulis ke Excel (.xls)
Jika masalah tetap ada di ASP.NET, Yang harus saya lakukan adalah mengubah pengaturan "Aktifkan Aplikasi 32-bit" ke True, di Pengaturan Lanjut untuk Kumpulan Aplikasi.
sumber
Saya memiliki masalah yang sama
Saya menerapkan jawaban dengan neo tetapi tidak berfungsi sampai saya mengubah penyedia ke "Provider = Microsoft.ACE.OLEDB.12.0;" dalam string koneksi.
Semoga ini bisa membantu jika seseorang menghadapi masalah yang sama.
sumber
Saya tahu ini pertanyaan yang cukup lama dan banyak orang telah menjawab. tapi saya meringkas hal-hal untuk dipahami:
Jika ekstensi file adalah xls dan OS adalah 32 bit maka hanya Anda yang dapat menggunakan "
Microsoft.Jet.OLEDB.4.0
". Microsoft belum merilis versi 64 bit driver ini.Jika ekstensi file adalah xlsx atau OS adalah 64 bit maka Anda harus menggunakan "
Microsoft.ACE.OLEDB.12.0
". Aplikasi yang dikompilasi dalam mode 32/64 bit tidak memengaruhi pemilihan driver.Selalu instal driver 64 bit
Microsoft.ACE.OLEDB.12.0
pada OS 64 bit. Jika Anda sudah menginstal Office 32 bit maka Anda perlu menjalankan driver dari cmd dengan / argumen pasif. Peretasan ini hanya berfungsi hingga Office 2013, Microsoft menghentikan solusi ini dari Office 2016 untuk driver Microsoft.ACE.OLEDB.16.0.Unduh driver Microsoft.ACE.OLEDB.12.0
Jika Aplikasi dikompilasi dengan flag AnyCPU, ia akan mencari driver Access 64 bit pada OS 64 bit dan driver akses 32 bit pada OS 32 bit.
sumber
Saya memiliki pesan yang sama, saya memiliki halaman web dengan lakukan di visual studio 2010, saya membaca file.xls pada halaman itu, dalam proyek visual saya tidak ada masalah, ketika saya meletakkannya di IIS lokal saya lempar saya 'Microsoft .Jet.OLEDB.4.0 'penyedia tidak terdaftar di mesin lokal' , saya memperbaiki masalah itu selanjutnya mengikuti langkah-langkah ini,
1.-Buka IIS
2.-Ubah appPool pada Pengaturan Lanjut
3.-true untuk mengaktifkan aplikasi 32-bit.
dan itu saja
ps. Saya mengubah Pengelola Konfigurasi ke X86 pada Platform Solusi Aktif
sumber
Jika aplikasi Anda berjalan pada localIIS, Anda dapat menyelesaikan masalah ini dengan mengaktifkan aplikasi 32-bit di Pengaturan Lanjutan AppPool
sumber
Saya memiliki masalah yang sama. Saya mengubah konfigurasi aplikasi menjadi
x86
, lalu berhasil!sumber
Saya baru saja mengubah Properti proyek saya ke dalam format x64
Project ---> Properties ---> Build ---> Target Framework ---> X64
sumber
Kami telah menemukan masalah ini di aplikasi desktop.
Lingkungan Dev: Windows 7 Ultimate - 64 bit .Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0
Ini telah diatasi dengan mengubah target Platform ke X86 dari CPU mana pun. Properti Proyek >> Bangun >> Target Platform.
sumber
Saya mengalami masalah ini dengan aplikasi desktop saya (penyedia 'Microsoft.Jet.OLEDB.4.0' tidak terdaftar pada mesin lokal). Saya tidak memiliki opsi untuk membangun sebagai aplikasi 32 bit. Berharap ini akan membantu orang lain dalam situasi yang sama.
Saya melakukan yang berikut dan masalahnya hilang:
Menginstal versi 64 bit dari Microsoft Access Database Engine 2010 Redistributable , seperti yang disarankan oleh neo
Mengubah penyedia saya ke Microsoft.ACE.OLEDB.12.0
sumber
Meskipun solusi yang lebih optimal adalah dengan hanya mengkompilasi ulang seperti yang disarankan di atas, yang memerlukan akses ke kode sumber. Dalam kasus saya, saya hanya memiliki .exe yang telah selesai dan harus menggunakan solusi ini. Ini menggunakan
CorFlags.exe
dari .Net SDK untuk mengubah karakteristik pemuatan aplikasi.CorLibs.exe
, jadi cukup periksa Alat Pengembangan Windows .CorFlags.exe
. Untuk saya menginstal .Net Framework 3.5 SDK, itu diC:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
.path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+
.Kamu sudah selesai! Ini menetapkan flag awal untuk program Anda sehingga mulai dalam mode WOW64 32 bit, dan karenanya dapat mengakses microsoft.jet.oledb.4.0.
sumber
Ubah pengaturan aplikasi IIS kolam pengaturan lanjutan. Aktifkan aplikasi 32 bit
sumber
Cukup Ubah properti berdasarkan mesin Anda dan semua telah dilakukan :-)
Project ---> Properties ---> Build ---> Target Framework ---> X64
atau
Project ---> Properties ---> Build ---> Target Framework ---> X86
sumber
Saya telah mengubah string koneksi saya dari
var myConnectionString = string.Format ("Penyedia = Microsoft.Jet.OLEDB.4.0; Sumber Data = {0}; Info Keamanan Tetap = Benar; Jet OLEDB: Kata Sandi Database =;", gisdbPath);
untuk ini:
var myConnectionString = string.Format ("Penyedia = Microsoft.Jet.OLEDB.4.0; Mode = Bagikan Tolak Tidak Ada; Sumber Data = {0}; id pengguna = Admin; kata sandi =;", gisdbPath);
Ini bekerja dari saya tidak pernah meminta Microsoft.Jet.OLEDB.4.0dibagikan.
sumber
Memang tidak ada versi 64 bit Jet - dan tidak ada rencana (tampaknya) untuk menghasilkan satu.
Anda mungkin dapat menggunakan driver ACE 64 bit: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Namun, Anda mungkin dapat mengalihkan proyek ke 32bit dalam versi Express (saya belum mencoba dan tidak memiliki 2008 diinstal dalam rasa lagi)
Mungkin sudah waktunya untuk menghapus akses database sama sekali, menggigit peluru dan pergi untuk SQL server?
sumber
Saya menggunakan VS2013 untuk Winforms, solusi di bawah ini bekerja untuk saya.
Unduh: http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=23734
Kemudian Tetapkan VS Target Platform ke x86.
sumber
Dalam versi IIS yang lebih lama, Anda tidak akan menemukannya
Advance Settings
untuk memungkinkanEnable 32-bit Applications
Anda harus menjalankan perintah berikut:cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
dan
% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i
Referensi: Di Sini
sumber
Saya mendapatkan pengecualian yang sama saat menjalankan "SQL Server 2014 Impor dan Ekspor Data (64-bit)" di Windows 8.1 saya.
Untuk memperbaiki masalah ini, saya telah melakukan yang berikut ini
mulai SQL Server 2014 Impor dan Ekspor Data (32-bit) alih-alih 64-bit dan berfungsi untuk saya. Saya belum mengubah pengaturan IIS dan tidak menginstal perangkat lunak tambahan apa pun.
sumber
Saya tahu bahwa saya memiliki masalah ini berulang kali ketika saya menggunakan aplikasi saya di server baru karena saya menggunakan driver ini untuk terhubung ke file Excel. Jadi inilah yang saya lakukan belakangan ini.
Ada Windows Server 2008 R2, saya menginstal driver Access untuk mesin x64 bit dan saya menyingkirkan pesan ini, yang membuat saya sangat senang hanya untuk bertemu dengan yang lain.
Yang ini di sini di bawah ini bekerja dengan baik pada mesin dev saya tetapi pada server memberi saya kesalahan bahkan setelah menginstal driver ODBC terbaru, yang saya pikir ini masalahnya, tapi ini adalah bagaimana saya menyelesaikannya.
Saya ganti dengan penyedia baru seperti ini di bawah ini:
Tetapi ketika saya melakukan ini, ada satu hal yang harus Anda perhatikan. Menggunakan ekstensi file .xlsx dan versi Excel adalah 12.0.
Setelah saya masuk ke pesan kesalahan ini: "Tidak Dapat Menemukan ISAM yang Dapat Diinstal" , saya memutuskan untuk mengubah beberapa hal seperti di bawah ini:
dan ya, saya sudah selesai dengan hal jahat itu, tetapi di sini saya mendapat pesan lain Mesin basis data Microsoft Access tidak dapat membuka atau menulis ke file 'time_zone'. Itu sudah dibuka secara eksklusif oleh pengguna lain, atau Anda perlu izin untuk melihat dan menulis datanya. yang memberitahu saya saya tidak jauh dari menyelesaikannya.
Mungkin ada proses lain yang membuka file sementara itu dan semua yang harus saya lakukan adalah restart dan semua akan mulai berjalan lancar seperti yang diharapkan.
sumber
pergi ke Start-> Run dan ketik cmd ini mulai Command Prompt (juga tersedia dari Start-> Programs-> Accessories-> Command Prompt)
ketik cd .. dan tekan return ketik cd .. dan tekan kembali lagi (terus lakukan ini sampai muncul prompt:>)
sekarang Anda harus pergi ke folder khusus yang mungkin c: \ windows \ system32 atau mungkin c: \ winnt \ system32 atau mungkin c: \ windows \ sysWOW64 coba ketikkan masing-masing ini misalnya cd c: \ windows \ sysWOW64 (jika dikatakan Sistem tidak dapat menemukan jalur yang ditentukan, coba yang berikutnya) cd c: \ windows \ system32 cd c: \ winnt \ system32 ketika salah satu dari itu tidak menyebabkan kesalahan, berhenti, Anda telah menemukan folder yang benar.
sekarang Anda harus mendaftarkan OLE DB 4.0 DLL dengan mengetikkan perintah ini dan menekan return setelah masing-masing
regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
sumber
Tidak ada penyedia 64 bit untuk Jet. Jika Anda ingin mendukung beberapa sumber DB termasuk Jet to Excel, Anda akan memerlukan setidaknya bagian dari aplikasi Anda untuk berjalan dalam proses 32 bit.
Kesalahan yang Anda dapatkan ketika Anda mengkompilasi untuk x86 agak aneh. Saya tidak bisa melihat bagaimana Anda akhirnya merujuk rakitan 64 bit dalam kasus ini.
sumber