Penyedia 'Microsoft.ACE.OLEDB.12.0' tidak terdaftar pada mesin lokal

442

Saya mencoba untuk mendapatkan data dari file Excel pada acara klik tombol. String koneksi saya adalah:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Ketika saya mengklik tombol, saya mendapat kesalahan berikut:

Penyedia 'Microsoft.ACE.OLEDB.12.0' tidak terdaftar pada mesin lokal.

Saya tidak tahu bagaimana cara memperbaikinya. Sistem operasi saya adalah Windows 7.

Shailesh Sahu
sumber
5
Hanya komentar tangensial: menggunakan OLEDB untuk membaca file Excel adalah teknologi kuno, sangat lambat, dan seperti yang Anda temukan, memerlukan menginstal paket tambahan secara manual di mesin target Anda. (Memang, pertanyaan diajukan pada 2011.) Alih-alih menggunakan ClosedXml (tersedia di NuGet) yang berfungsi langsung di luar kotak.
Shaul Behr
3
@ShaulBehr Akan lebih baik, tetapi ClosedXml hanya berfungsi untuk file .xlsx, bukan .xls
Jimmy
2
Jika Anda mengimpor ke Sql Server, Anda dapat menjalankan kueri ini dari ssms: execute master.dbo.xp_enum_oledb_providers. Ia akan memberi tahu Anda penyedia apa yang menurut pendapat Anda miliki. Sudah tua saya, saya memiliki Microsoft.ACE.OLEDB.16.0 dan Microsoft.ACE.OLEDB.12.0, tetapi ketika saya mencoba untuk mengimpor data, saya mendapat 'tidak terdaftar di mesin lokal Anda' seperti OP, untuk kedua Excel 16 dan format file Excel 2007 (masing-masing oledb.16.0 dan oledb.12.0). Masuk akal untuk memotong kerugian Anda dan menyerah pada perangkat lunak Microsoft pada saat ini.
user1040323
1
@ user1040323, execute master.dbo.xp_enum_oledb_providersmemberi tahu Anda apa yang ada di server bukan di Mesin Lokal Anda .
Nathan Goings
1
Di sini yang harus bekerja; - Ini: Tidak benar-benar didokumentasikan, tetapi saya memang menemukan cara untuk menginstal versi 32-bit dan 64-bit. Cukup tambahkan argumen baris perintah "/ pasif" ke perintah: "C: \ direktori path \ AccessDatabaseEngine_x64.exe" / pasif
TaW

Jawaban:

532

Nah, Anda perlu menginstalnya. Kamu sedang mencari:

Varian
sumber
44
Saya mengunduh komponen-komponen ini dan mereka tidak bekerja untuk saya, saya harus mengunduh Microsoft Access Database Engine 2010 Redistributable dari sini: microsoft.com/en-in/download/details.aspx?id=13255 Saya yakin itu karena saya Saya menggunakan MS Office 2013. Terima kasih telah menunjukkan saya ke arah yang benar.
Sizons
5
Saya harus menginstal mesin database akses dan Driver Sistem Office 2007: Komponen Konektivitas Data di sini microsoft.com/en-us/download/confirmation.aspx?id=23734 untuk membuatnya berfungsi.
Chris
6
Situasi saya, semuanya bekerja dengan baik, kemudian tiba-tiba mulai mendapatkan kesalahan ini. JADI apa yang bisa menyebabkan ini? Tidak ada kode yang diubah.
eetawil
21
Dalam kasus saya, saya harus beralih dari "Any CPU" ke x64 agar sesuai dengan arsitektur saya.
Rob Sedgwick
2
Jack the Ripper mengacu pada solusi yang disediakan dalam jawaban itu sendiri, bukan komentar. Menginstal 2007 Office System Driver: Data Connectivity Componentsmenyelesaikan masalah dengan segera.
Silkfire
156

Versi 64-bit dari 'Microsoft Access Database Engine 2010 Redistributable' yang akan memungkinkan Anda untuk menggunakan penyedia 'Microsoft.ACE.OLEDB.12.0' tersedia di sini:
http://www.microsoft.com/en-us/ unduh / details.aspx? id = 13255

Jika Anda menggunakan unduhan dari jawaban yang diterima, Anda harus membuat untuk x86, seperti yang ditunjukkan oleh @ backtestbroker.com.

rsbarro
sumber
18
Jika menggunakan VS 2012, pastikan juga kotak centang "Lebih suka 32-bit" tidak dicentang dalam Properti >> Bangun >> konfigurasi umum proyek.
Devstruck
3
Saya menggunakan VS 2008 (jangan tanya) dan solusi ini tidak berfungsi sampai saya membaca tip post_erasmus dan mengatur 'Target Platform' ke x64 di Properties >> Build >> Konfigurasi umum aplikasi saya. Diurutkan, terima kasih!
Resource
1
Tautan dalam jawaban ini juga memungkinkan Anda untuk mengunduh dan menginstal versi 32-bit. Meskipun saya memiliki Windows 7 64-bit, Visual Studio 2013 IIS Express berjalan dalam mode 32-bit secara default, dan saya sudah memiliki beberapa komponen Office 2013 yang diinstal dalam 32-bit, jadi instalasi 32-bit adalah yang saya butuhkan.
Eric Barr
1
Dengan jawaban ini, saya juga harus mengatur "Aktifkan Aplikasi 32-Bit" pada Application Pool menjadi False.
iowatiger08
1
Ini membantu menyelesaikan masalah saya. Aplikasi VS 2019 saya dikompilasi menggunakan CPU Apa pun yang menghasilkan pustaka x64. Saya memiliki versi 32-bit Office 2013 yang diinstal yang mencegah saya menginstal x DB Access Engine x64. Setelah menginstal Office versi x64 saya kemudian dapat menginstal mesin x64 dan sekarang semuanya berfungsi. Neraka DLL hidup terus.
Mike Lowery
74

tergantung pada aplikasi (32 / 64bit) menggunakan koneksi yang baru saja Anda instal

Ringkasan:

  • semua kantor dari 2007-2016 berisi penyedia "Microsoft.ACE.Oledb.12.0"
  • tergantung pada arsitektur aplikasi Anda pilih mesin runtime yang sesuai (32/64) 6
  • periksa penyedia Anda dengan perintah powershell dari shell 32 dan 64bit :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • dan Anda akan melihat penyedia mana yang dapat digunakan sistem Anda

cerita panjang: string dapat ditemukan dengan http://live.sysinternals.com/strings.exe

misalnya. pada Sistem 64bit dengan driver 32bit diinstal

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

bahkan di kantor yang akan datang 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

Anda akan menemukan senarnya

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.Oledb.12.0

Office 2013 juga dilengkapi dengan csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

yang berisi " Microsoft.ACE.OLEDB.15.0 "

dan Kantor 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

yang memiliki versi " Microsoft.ACE.OLEDB.16.0 "

Bernhard
sumber
Saya mendapatkan kesalahan ini dalam VS2015 menggunakan Nuget LinqToExcel. Ternyata, karena saya telah menginstal ACE x64, saya harus secara eksplisit membangun untuk x64 (Manajer Konfigurasi), daripada menargetkan Semua CPU.
subsci
Powershell menunjukkan "Microsoft.ACE.Oledb.12.0" sudah diinstal. Namun menginstal paket Access 2007 (alias 2007 Office System Driver: Komponen Konektivitas Data ) membuat saya bangun dan pergi. Sudah ada di sistem saya: Ent Office 2016, Visual Studio 2017 Ent
SushiGuy
6
Skrip PowerShell yang menginformasikan versi mana yang diinstal adalah genius! Terima kasih @Bernhard
Rob Bowman
agak offtopic tetapi powershell sederhana ini adalah untuk driver ODBC Anda:Get-OdbcDriver | select Name,Platform
Bernhard
Ini memecahkan masalah bagi saya pada mesin server 64-bit dengan mengunduh runtime Access 32-BIT 2016. Pada dasarnya mulailah dengan 32-bit untuk berada di sisi aman (hal-hal buruk terjadi ketika Anda mencoba untuk mengubah hal-hal menjadi 64 bit di proyek).
Eric Mutta
45

Hal pertama yang perlu Anda periksa adalah konfigurasi build aplikasi Anda.

  • Jika Anda telah membangun proyek Anda di bawah platform x86 , maka untuk menyelesaikan masalah Anda, Anda harus menginstal paket-paket berikut pada mesin Anda:

    1. Untuk menggunakan penyedia 'Microsoft.ACE.OLEDB.12.0' Anda harus menginstal Microsoft Access Database Engine 2010 Redistributable terlebih dahulu, instalasi ini tersedia di: http://www.microsoft.com/download/en/details.aspx ? id = 13255 .

      Setelah instalasi selesai, coba jalankan aplikasi Anda, jika ini menyelesaikan masalah hebat, jika tidak, lanjutkan ke langkah 2.

    2. Langkah selanjutnya ini merupakan solusi yang tidak dapat dijelaskan, yang berfungsi untuk Office 2010, meskipun itu adalah Komponen Konektivitas Data Office 2007. Saya tidak yakin mengapa ini berhasil, tetapi itu berhasil dan ini terbukti bekerja di hampir semua kasus. Anda perlu menginstal Driver Sistem Office 2007: Komponen Konektivitas Data , instalasi ini tersedia di: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      Setelah instalasi ini selesai, coba jalankan aplikasi Anda, ini akan menyelesaikan masalah.

  • Jika Anda mencoba menjalankan aplikasi yang dibangun di bawah platform x64 atau AnyCPU , saya akan merekomendasikan terlebih dahulu memvalidasi bahwa itu berjalan seperti yang diharapkan di bawah platform x86. Jika tidak berjalan di bawah platform x86 itu, lakukan langkah-langkah di bagian pertama dan validasikan bahwa itu berjalan seperti yang diharapkan.

    Saya memang membaca bahwa driver MS Access termasuk driver Database OLEDB hanya berfungsi di bawah platform x86 dan tidak kompatibel di bawah platform x64 atau AnyCPU. Tetapi ini tampaknya tidak benar. Saya memvalidasi aplikasi saya berjalan ketika membangun x86, kemudian saya menginstal Access Database Engine menggunakan bendera pasif.

    1. Pertama unduh file secara lokal Anda dapat mengunduh instalasi di sini: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. Menginstal menggunakan prompt perintah dengan bendera '/ pasif'. Di prompt perintah, jalankan perintah berikut: 'AccessDatabaseEngine_x64.exe / pasif'

    Setelah 2 langkah ini saya berhasil menjalankan aplikasi saya setelah membangun konfigurasi build x64 atau AnyCPU. Ini muncul untuk menyelesaikan masalah saya.

Catatan: Urutan langkah-langkah tampaknya membuat perbedaan, jadi harap ikuti.

Merav Kochavi
sumber
5
Saya punya masalah bahwa saya beralih dari aplikasi 32bit ke 64bit dan tidak berjalan lagi. Bagian kedua dari instruksi Anda berfungsi dengan baik! The / pasif Bendera memungkinkan instalasi bahkan dengan 32bit Microsoft Office.
Freddy
1
Tip: Ekstrak AccessDatabaseEngine_x64.exe ke folder untuk mendapatkan file AceRedist.msi dan Data.cab. Buka cmd prompt dalam mode Admin dan jalankan AceRedist.msi /passive.
Jeremy Thompson
1
Terima kasih banyak. Opsi pertama bekerja untuk saya. Saya ingat berapa banyak kerumitan yang saya hadapi untuk menghapus 32 bit Office & hanya setelah menginstal 64 bit kantor masalah ini diperbaiki sebelumnya. Tetapi komponen kantor 64 bit ini melakukan keajaiban sebagai gantinya.
Biki
Karena 2 poin saya sudah perbaiki. Terima kasih banyak. Saya perlu menginstal microsoft.com/download/en/confirmation.aspx?id=23734 ini .
SENA
33

Saya mendapatkan kesalahan / pengecualian ini di Visual Studio 2010 ketika saya mengubah build saya di kotak dialog Configuration Manager dari "x86" menjadi "Any CPU". Driver database OLEDB ini yang saya pahami hanya berfungsi di x86 dan tidak kompatibel dengan 64bit. Mengubah konfigurasi build kembali ke x86 memecahkan masalah bagi saya.

timodius
sumber
5
OLEDB kompatibel dengan x64. Itu dapat berjalan di bawah platform APA PUN, BUKAN HANYA x86, tetapi juga CPU apa pun. Lihat jawaban lengkap di bawah ini: stackoverflow.com/a/32760211/3637582
Merav Kochavi
Di bawah debugging aplikasi di Visual Studio sebenarnya membantu untuk memilih x86 daripada CPU / x64 di manajer konfigurasi.
iknownothing
25

Saya menginstal driver MS dan itu masih tidak berhasil untuk saya. Kemudian saya menemukan posting blog ini yang menyelesaikan masalah. Baca di sana, kalau tidak gunakan dua gambar ini (ditautkan dari pos itu) sebagai ringkasan TLDR:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Shaul Behr
sumber
Akan memposting ini sebagai kontribusi saya. Ini masalah saya. Saya akan mengubah pengaturan IIS ini kemarin karena satu proyek dalam solusi saya dikompilasi x86, jadi saya menganggap itu akan mengklasifikasikan seluruh program sebagai 32-bit.
Lee
Server saya menjalankan @ 64bits tetapi Komponen MS Office yang diinstal adalah 32bits. Ini menyelesaikan masalah saya. Terima kasih.
MarceloBarbosa
Apa hal yang luar biasa sulit untuk bekerja :(, saya ingin tahu apakah Anda dapat skrip ini di PowerShell dan hanya mengintegrasikannya ke dalam semacam skrip pengaturan server otomatis?
David Rogers
@DavidRogers mungkin, tapi saya bukan ahli PS, jadi jangan lihat saya untuk itu! ;-)
Shaul Behr
@ShaulBehr Semoga ini memberikan wawasan kepada orang lain, Perintah khusus yang saya gunakan adalah (Dalam jendela powershell / cmd tinggi): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
David Rogers
16

Jika Anda menggunakan 64-bit tetapi masih mengalami masalah bahkan setelah menginstal AccessDatabaseEngine, lihat posting ini , itu memecahkan masalah bagi saya.

yaitu Anda harus menginstal AccessDatabaseEngine ini

Aximili
sumber
15

Untuk semua yang masih terkena dampak ini.

Saya mendapatkan kesalahan ...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

... seperti yang dijelaskan oleh OP, Shailesh Sahu.

Saya memiliki 64bit Windows 7.

Masalah saya ada di dalam skrip PowerShell , tetapi menggunakan string koneksi, mirip dengan posting OP, jadi semoga temuan saya dapat diterapkan ke C #, PowerShell dan bahasa lain yang mengandalkan pengandar "Microsoft.ACE.OLEDB".

Saya mengikuti instruksi pada utas forum MS ini: http://goo.gl/h73RmI

Saya pertama kali mencoba menginstal versi 64bit , kemudian menginstal versi 32bit dari AccessDatabaseEngine.exe dari halaman ini http://www.microsoft.com/en-us/download/details.aspx?id=13255

Tapi tetap tidak ada sukacita.

Saya kemudian menjalankan kode di bawah ini di PowerShell (dari situs SQL Panda http://goo.gl/A3Hu96 )

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

... yang memberi saya hasil ini (saya telah menghapus sumber data lain untuk singkatnya) ...

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

Seperti yang Anda lihat, saya punya Microsoft.ACE.OLEDB. 15, 0 (lima belas) bukan Microsoft.ACE.OLEDB. 12, 0 (dua belas)

Jadi, saya mengubah string koneksi saya menjadi 15 dan itu berhasil.

Jadi, cuplikan singkat PowerShell untuk mendemonstrasikan cara soft-code versi ...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

diubah untuk memilih versi ACE terbaru, jika lebih dari satu

Mudah-mudahan, siapa pun yang menemukan ini sekarang dapat memeriksa untuk melihat apa versi OLEDB diinstal dan menggunakan nomor versi yang sesuai.

TechSpud
sumber
Hai, saya mencoba membaca lembar Excel dengan PowerShell. File Excel disimpan di pustaka dokumen SharePoint dan tidak ada instalasi Excel di server. Saya memiliki windows server 2008 R2. Saya menginstal Office System Driver: Komponen Konektivitas Data namun ketika saya menjalankan kueri Anda tidak dapat melihat Microsoft.ACE.OLEDB. Apakah Anda punya ide tentang itu? dan ada saran? Terima kasih sebelumnya.
doganak
3
Saya menemukan jawabannya. Saya telah meminta kepada administrator sistem kami untuk menginstal MS Access Database Engine. Dia telah menginstal versi x86. Ketika saya menjalankan kueri di PowerShell x86 lagi saya melihat ACE.OLEDB.
doganak
Kode PowerShell yang luar biasa. Saya memiliki versi 32-bit (yang tidak muncul di daftar PowerShell), yang mencegah saya menginstal yang 64-bit. Setelah saya menghapus versi 32-bit, saya dapat menginstal versi 64-bit tanpa pesan "Anda sudah memiliki komponen Office 32-bit ...". Versi 64-bit memang muncul di daftar PowerShell, dan aplikasi saya mulai berfungsi.
Doppelganger
13

Meskipun banyak jawaban telah diberikan, masalah yang saya temui belum disebutkan.

  • Skenario Saya: Aplikasi 64-Bit, Win10-64, Office 2007 32-Bit diinstal.
  • Instalasi 32-Bit Installer AccessDatabaseEngine.exe yang diunduh dari MS melaporkan keberhasilan, tetapi TIDAK diinstal, sebagaimana diverifikasi dengan Skrip Powershell dari salah satu posting di atas di sini.

  • Instalasi penginstal 64-Bit, AccessDatabaseEngine_X64.exe melaporkan pesan kesalahan yang mengejutkan:

masukkan deskripsi gambar di sini

Solusi yang sangat sederhana telah ditemukan di sini di situs Autodesk. Cukup tambahkan parameter / pasif ke string baris perintah, seperti ini:

AccessDatabaseEngine_X64.exe / pasif

Instalasi berhasil, driver OleDb bekerja.

File Excel yang saya proses dengan OleDb adalah tipe xlsx, diproduksi dengan EPPlus 4.5 dan dimodifikasi dengan Excel 2007.

wah
sumber
1
Saya dapat menginstal AccessDatabaseEngine_X64.exe dengan cara biasa tetapi saya menggunakan parameter pasif untuk menginstal 32 bit equilavent (AccessDataBaseEngine.exe). Kemudian, saya akhirnya bisa terhubung ke Access database dari Visual Studio 2019.
VolkanOzcan
10

Anda perlu mengubah Platform Solusi dari "Any CPU" ke "x86" atau "x64" berdasarkan bitness dari instalasi kantor.

Langkah-langkahnya diberikan di bawah ini:

  1. Klik kanan pada File Solusi di Solution Explorer: masukkan deskripsi gambar di sini

    1. Klik pada Manajer Konfigurasi.
    2. Klik pada Active Platform Drop down, jika x86 sudah ada di sana lalu pilih itu, kalau tidak klik Baru. masukkan deskripsi gambar di sini

    3. Pilih x86 atau x64 dari dropdown platform baru: masukkan deskripsi gambar di sini

Kompilasi dan jalankan aplikasi Anda.

mohit busa
sumber
6

Jika "AccessDatabaseEngine" yang diinstal masih tidak membantu, di bawah ini solusinya:

Anda perlu mengubah Platform Solusi Aktif dari "CPU" menjadi "x86".

Penyedia OLEDB Tidak Terdaftar pada Mesin Lokal

Dari CodeProject.com

syp_dino
sumber
Anda dapat menjalankannya di platform APA PUN, BUKAN HANYA 'x86', tetapi juga sebagai 'CPU Apa pun' sebagai 'x64'. Lihat jawaban lengkap di bawah ini: stackoverflow.com/a/32760211/3637582
Merav Kochavi
6

Saya dapat memperbaikinya dengan mengikuti langkah-langkah di artikel ini: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- di-mesin-lokal

Poin kunci bagi saya adalah ini:

Saat debugging dengan IIS,

secara default, Visual Studio menggunakan versi 32-bit. Anda dapat mengubah ini dari dalam Visual Studio dengan masuk ke Alat »Pilihan» Proyek Dan Solusi »Proyek Web» Umum, dan memilih

"Gunakan IIS Express versi 64 bit untuk situs web dan proyek"

Setelah memeriksa opsi itu, kemudian mengatur target platform proyek saya kembali ke "Any CPU" (saya telah mengaturnya ke x86 di suatu tempat dalam proses pemecahan masalah), saya dapat mengatasi kesalahan tersebut.

Ken Johnson
sumber
1
Terima kasih, sebagian besar jawaban lain adalah turun ke 32 bit, tetapi ini membantu Anda maju ke 64 bit.
illinoistim
Terima kasih banyak, inilah yang saya cari.
Manoj Kalluri
6

Jika Anda sedang men-debug proyek web, pastikan IIS Express berjalan dalam 32 atau 64 bit tergantung pada pengaturan proyek Anda.

Pergi ke

Alat> Opsi> Proyek dan Solusi> Proyek Web

dan dari sana periksa (atau hapus centang) 'Gunakan versi 64 bit dari IIS Express ...'

Albert Zakhia
sumber
1
Wow banyak waktu mencoba solusi lain, hanya memperbaikinya! terima kasih
Hernaldo Gonzalez
5

Pertama, pastikan versi microsoft.ace.oledb.12.0 mana yang diinstal di sistem Anda.

Periksa di jalur di bawah C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64 bit diinstal

Periksa di jalur di bawah C: \ Program Files (x86) \ File Umum \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL - x86 bit diinstal

Jika (x86) diinstal maka gunakan platform konfigurasi manajer ubah solusi ke x86, untuk x64 ubah ke x64.

Jika tidak tersedia maka instal menggunakan tautan di bawah ini

https://www.microsoft.com/en-us/download/details.aspx?id=23734

Shubham Tiwari
sumber
3

syp_dino,

Solusi bagi saya seperti yang Anda sarankan untuk penyedia "Microsoft.ACE.OLEDB.12.0 'tidak terdaftar pada mesin lokal" kesalahannya adalah mengubah Platform Solusi Aktif dari "CPU Apa Pun" menjadi "x86".

Ketika saya melakukan langkah-langkah itu, membangun kembali solusi, meraih EXE dan ditempatkan di dalam jaringan, semuanya bekerja dengan lancar pada mesin Windows 7 64 bit.

Sevron Ghee
sumber
Anda dapat menjalankannya di platform apa pun, BUKAN HANYA x86, tetapi juga CPU apa pun. Lihat jawaban saya di bawah ini: stackoverflow.com/a/32760211/3637582
Merav Kochavi
3

Saya punya masalah ini ketika mencoba mengimpor data dari file excel (xlsx) ke SQL Server DB menggunakan SSMS 2014.

The 2007 Sistem Office Supir: Data Connectivity Components menginstal melakukan trik untuk saya.

Taran
sumber
... dan jika itu tidak berhasil, coba pilih "Versi Excel" yang berbeda dari daftar tarik-turun layar "pilih sumber data". stackoverflow.com/a/56171883/283895
tgolisch
@Taran Link tidak tersedia
evry1falls
Ini terlihat seperti file, tetapi saya tidak dapat mengonfirmasi download.cnet.com/…
Taran
3

Saya menghadapi masalah yang sama ini. Pergi ke Properti Solusi dan ubah CPU Apa saja menjadi x86, saya pikir itu akan melakukan pekerjaan.

Md Shahriar
sumber
3

lakukan 2 langkah ini: 1. di menu ini: proyek -> properti proyek Anda ... -> Bangun: hapus centang "prefer 32-Bit" 2. in connectionString: tulis cuote sebelum dan sesudah Extended properties, seperti ini: Extended Properties = ' Excel 12.0 Xml; HDR = YA '

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;
Sharif Lotfi
sumber
Menghapus centang "Lebih suka 32-bit" tampaknya bekerja untuk saya sementara menginstal Microsoft Access Database Engine 2010 Redistributable.
IT Delinquent
Saya menghapus centang 'Lebih suka 32-Bit' dan sudah berjalan !!!
user1584253
3

Konfigurasi ini bekerja pada Januari 2020 di mesin baru saya:

(1 - x64 saja) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 diinstal dengan / argumen pasif, pengaturan build VStudio diatur ke x64 secara eksplisit, dengan string koneksi berikut: Penyedia = Microsoft.ACE.OLEDB.16.0; Sumber Data = D: ... \ MyDatabase.accdb

(2 - x64 atau x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 diinstal dengan / argumen pasif, PLUS AccessDatabaseEngine 2010 (32bit) diinstal dengan / argumen pasif, pengaturan build VStudio diatur ke AnyCPU, dengan string koneksi berikut: Penyedia = Microsoft.ACE.OLEDB.16.0; Sumber Data = D: ... \ MyDatabase.accdb

(3 - x32 saja) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) diinstal dengan / argumen pasif, pengaturan build VStudio diatur ke x86, dengan string koneksi berikut: Penyedia = Microsoft.ACE.OLEDB.12.0; Sumber Data = D: ... \ MyDatabase.accdb

CATATAN KEGAGALAN

Menggunakan ACE.OLEDB.12.0 x64 penyedia dalam string koneksi gagal dengan hanya AccessDatabaseEngine_x64 2016 yang diinstal seperti di atas dalam (1).

Menggunakan AnyCPU di pengaturan pembuatan studio visual gagal dalam (1). Diperlukan pengaturan x64. Mungkin ini karena AnyCPU berarti bahwa Vstudio harus melihat penyedia x32 ACE.OLEDB.nn.0 pada waktu kompilasi.

Mesin ACE.OLEDB.12.0 2016 x32 / pasif TIDAK akan menginstal ketika melihat aplikasi x64 sekitar. (Penginstal pasif ACE.OLEDB.12.0 2010 x32 / bekerja.)

KESIMPULAN

Untuk menggunakan pengaturan build x64, Anda harus memiliki engine database x64 2016 DAN ACE.OLEDB.16.0 koneksi-string DAN pengaturan build x64 eksplisit untuk bekerja dengan Office 365 pada Januari 2020. Menggunakan opsi / pasif membuat instalasi mudah. Penghargaan bagi siapa pun yang memposting tip itu!

Untuk menggunakan AnyCPU, saya perlu memiliki mesin x32 ACE.OLEDB.12.0 2010 dan mesin ACE.OLEDB.16.0 x64 diinstal. Dengan begitu Vstudio dapat melihat mesin x32 dan x64 pada waktu kompilasi "AnyCPU". Saya bisa mengubah string koneksi provider ke ACE.OLEDB.12.0 untuk operasi x32 atau ke ACE.OLEDB.16.0 untuk operasi x64. Keduanya bekerja dengan baik.

Untuk menggunakan pengaturan build x86, Anda harus memiliki mesin database x32 2010 DAN penyedia string-koneksi ACE.OLEDB.12.0 DAN pengaturan build x86 eksplisit untuk bekerja dengan Office 365 x32 pada Januari 2020.

Kevin
sumber
2

Saya memiliki masalah serupa ketika kita membaca file Excel.

Sejarah masalah:

Kami baru-baru ini memigrasi aplikasi kami dari 32-bit ke 64-bit karena persyaratan memori. Untuk itu kami memigrasikan windows 7 dari 32-bit ke 64-bit. Tetapi kami masih memasang kantor 32-bit pada mesin kami.

karena, kami mengalami masalah ini saat mengimpor data Excel ke dalam aplikasi.

Larutan,

Saya mengunduh versi 64-bit dari http://www.microsoft.com/en-us/download/details.aspx?id=13255 dan diinstal dengan argumen sebagai,

AccessDatabaseEngine_x64.exe / pasif

Tanpa perubahan kode, masalah saya dapat diatasi.

catatan:

Pada OS 64-bit dan kantor 64-bit, fungsionalitas saya berfungsi dengan baik tanpa perbaikan ini. Perbaikan ini hanya diperlukan saat aplikasi kami berjalan 64-bit pada OS 64-bit yang memiliki kantor 32-bit diinstal di dalamnya.

Rahul Techie
sumber
Namun, Microsoft menentang solusi ini. Beberapa klien saya mengamati distorsi dalam program Office lainnya karena perbaikan ini.
Rahul Techie
1

Saya mengikuti instruksi yang ditetapkan oleh orang lain; menginstal tambalan ini, menginstal tambalan itu serta Microsoft Access Database Engine 2010.

Masalah saya adalah bahwa saya menggunakan perpustakaan yang sama (linq2sql) di 2 situs di mesin saya; 1 bekerja dan 1 tidak.

Akhirnya saya menemukan bahwa saya harus "mengaktifkan aplikasi 32 bit" di pengaturan lanjutan apppool untuk situs saya yang tidak berfungsi.

Semuanya berfungsi dengan baik sekarang.

Iklan
sumber
1

juga bisa mencoba langkah-langkah ini

Dalam SQL Server, 1.Buka satu basis data 2.Clic di opsi 'Server Obtect' 3.Clic di 'Linked Server' 4.Clic di 'Penyedia' 5.Clic Rigth di 'Microsoft.ACE.OLEDB.12.0' 6. Hapus centang pada semua opsi dan tutup

Diego Castro
sumber
1

Ingatlah untuk menginstal AccessDatabaseEngine di server untuk aplikasi web.

sosha
sumber
1

Saya memiliki masalah yang sama tetapi dalam hal ini penyedia microsoft-ace-oledb-12-0 sudah diinstal pada mesin saya dan bekerja dengan baik untuk aplikasi lain yang dikembangkan.

Perbedaan antara aplikasi tersebut dan yang saya punya masalah adalah Aplikasi Lama berjalan di " IIS Lokal " sedangkan yang dengan kesalahan ada di " IIS Express (berjalan dari Visual Studio"). Jadi apa yang saya lakukan adalah-

  1. Klik kanan pada Nama Proyek.
  2. Pergi ke Properties
  3. Buka Tab Web di sebelah kanan.
  4. Di bawah Server pilih IIS Lokal dan klik tombol Buat Direktori Virtual.
  5. Jalankan aplikasi lagi dan berfungsi.
NetStarter
sumber
1

Saya memiliki Microsoft Access Database Engine 2010 Redistributable yang sudah diinstal pada mesin saya tetapi masih menerima Penyedia Microsoft ACE OLEDB kesalahan .

Kemudian saya ingat bahwa saya telah memutakhirkan ke Office 2016 baru-baru ini, jadi, mungkin saya harus mencoba menginstal ulang Microsoft Access Database Engine 2010 Redistributable . Dan itu memperbaiki masalah pada mesin saya.

Jadi, jika Anda telah memutakhirkan ke versi MS Office yang berbeda atau bahkan memperbaiki / menginstal ulang MS Office Anda, maka coba instal ulang Microsoft Access Database Engine 2010 Redistributable sebelum membuang-buang waktu dengan mencari perbaikan lainnya. Semoga berhasil!

Sagar
sumber
1

1.) Verifikasi string koneksi Anda dengan ConnectionStrings.com .

2.) Pastikan Anda memiliki mesin database yang benar diinstal. Ini adalah dua mesin basis data yang membantu saya.

Microsoft Access Database Engine 2010 Redistributable

2007 Office System Driver: Komponen Konektivitas Data

3.) Mungkin ada masalah dengan platform target build Anda menjadi "Any CPU", mungkin harus "X86" (Properties, Build, Platform Target).

u8it
sumber
Anda dapat menjalankannya di platform APA PUN, BUKAN HANYA 'x86', tetapi juga sebagai 'CPU Apa pun' sebagai 'x64'. Lihat jawaban lengkap di bawah ini: stackoverflow.com/a/32760211/3637582
Merav Kochavi
Ok, well saya tidak berpikir itu yang terjadi pada saya ... jadi masih layak disebutkan bahwa platform target membangun seseorang mungkin menjadi bagian dari masalah.
u8it
1

Jika Anda mendapatkan kesalahan ini ketika mencoba menggunakan ACE dari aplikasi ASP.NET, kemungkinan besar penyebabnya adalah Anda telah menginstal salah satu dari versi 32-bit. Secara default, IIS pada sistem operasi 64-bit akan menjalankan aplikasi dalam proses pekerja 64-bit. Proses 64-bit tidak dapat memuat DLL 32-bit. Ketika panggilan dilakukan ke penyedia ACE, proses 64 bit akan berusaha menemukan DLL 64-bit. Jika tidak ada, Anda mendapatkan pesan kesalahan yang membawa Anda ke sini.

Dalam hal ini Anda memiliki dua opsi. Pertama, Anda dapat menginstal versi 2010 64-bit. Jika Anda menginstal versi 2007 32-bit, Anda dapat menginstal versi 2010 64-bit di sampingnya. Jika Anda menginstal versi 32-bit 2010, Anda harus menghapus instalan dan mengunduh serta menginstal versi 64-bit 2010. Anda tidak dapat menginstal versi 32-dan 64-bit dari penyedia 2010 yang diinstal secara bersamaan. Jika Anda melakukan instalasi pada mesin pengembangan Anda, Anda mungkin juga terkendala oleh sedikit instalasi Office yang ada.

Opsi kedua adalah mengubah kumpulan aplikasi di IIS untuk mengaktifkan aplikasi 32-bit. Jika Anda menggunakan versi lengkap IIS, Anda dapat menggunakan alat manajemen untuk melakukan ini (Control Panel »Alat Administratif» Manajer Layanan Informasi Internet (IIS)).

Untuk pemahaman lebih lanjut silakan lihat tautan di bawah ini

Pangeran Antony G
sumber
1

Saya menerima kesalahan ini ketika mengimpor data dari file Excel ke MS-SQL. Penyedia sudah diinstal (64-bit) dan ini mengejutkan saya mengapa tidak bekerja. Jadi yang saya lakukan adalah mencari aplikasi Impor / Ekspor yang digunakan di sini yaitu .EXE. Dan saya menemukannya di

C: \ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

Saya kemudian menjalankan .exe secara langsung untuk melakukan impor data. Dan itu berhasil!

Chagbert
sumber
Hm, saya punya beberapa versi di sana, SSMS pasti menggunakan yang salah.
SteveCav
1

Ini bekerja untuk saya sekarang.

  1. Kunjungi halaman ini lalu unduh paket yang sesuai untuk komputer Anda (AccessDatabaseEngine.exe atau AccessDatabaseEngine_X64.exe)
  2. Pasang itu.
  3. Selamat menikmati ... Kode Anda berfungsi sekarang ...

Tetapi untuk paket aplikasi Anda, Anda dapat menggunakan solusi berikut:

  1. Masuk "C: \ Program Files (x86) \ Common Files \ microsoft shared" atau "C: \ Program Files \ Common Files \ Microsoft Shared" dan letakkan direktori "OFFICE14" di lokasi yang sama dengan file paket Anda.

Atau

  1. Lampirkan dua proyek (dalam item1) dalam paket instalasi Anda.
Mohammad Fathi MiMFa
sumber