'Microsoft.ACE.OLEDB.12.0' sağlayıcısı yerel makinede kayıtlı değil


442

Bir düğme tıklama olayı bir Excel dosyasından veri almaya çalışıyorum. Bağlantı dizem:

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

Düğmeye tıkladığımda, aşağıdaki hatayı aldım:

'Microsoft.ACE.OLEDB.12.0' sağlayıcısı yerel makinede kayıtlı değil.

Bunu nasıl düzeltebileceğime dair hiçbir fikrim yok. İşletim sistemim Windows 7.


5
Sadece teğetsel bir yorum: Excel dosyasını okumak için OLEDB kullanmak çok eski bir teknolojidir, keşfettiğiniz gibi, hedef makinenize manuel olarak ekstra paketler yüklemenizi gerektirir. (Verilen soru 2011'de sorulmuştur.) Aksine, kutudan çıkar çıkmaz çalışan ClosedXml (NuGet'te bulunur) kullanın.
Shaul Behr

3
@ShaulBehr İyi olurdu, ama ClosedXml yalnızca .xlsx dosyaları için çalışır, .xls için değil
Jimmy

2
Sql Server'a aktarıyorsanız, bu sorguyu ssms'den çalıştırabilirsiniz: execute master.dbo.xp_enum_oledb_providers Hangi sağlayıcılara sahip olduğunuzu düşündüğünü size söyleyecektir. Eskiden hem Microsoft.ACE.OLEDB.16.0 hem de Microsoft.ACE.OLEDB.12.0'ı aldım, ancak verileri içe aktarmaya çalıştığımda, hem Excel 16 için OP ile aynı 'yerel makinenizde kayıtlı değil' aldım ve Excel 2007 dosya biçimleri (sırasıyla oledb.16.0 ve oledb.12.0). Bu noktada kayıplarınızı azaltmak ve Microsoft yazılımından vazgeçmek mantıklıdır.
user1040323

1
@ user1040323, execute master.dbo.xp_enum_oledb_providerssunucuda Yerel Makinenizde olmayanları söyler .
Nathan Goings

1
İşte çalışması gereken; - Öyle: Belgelenmemiş, ama hem 32 bit hem de 64 bit sürümleri kurmak için bir yol buldum. Komut satırına "/ passive" komut satırı argümanını eklemeniz
yeterlidir

Yanıtlar:


533

Bunu yüklemeniz gerekiyor. Arıyorsun:


44
Bu bileşenleri indirdim ve benim için çalışmadılar, buradan yeniden dağıtılabilen Microsoft Access Veritabanı Altyapısı 2010'u indirmek zorunda kaldım: microsoft.com/en-in/download/details.aspx?id=13255 Eminim MS Office 2013 kullanıyorum. Yine de beni doğru yöne yönlendirdiğiniz için teşekkürler.
Sizons

5
Çalışması için erişim veritabanı motorunu ve 2007 Office Sistem Sürücüsü: Veri Bağlantısı Bileşenlerini buraya yüklemem gerekiyordu microsoft.com/en-us/download/confirmation.aspx?id=23734 .
Chris

6
Durumum, her şey iyi çalışıyordu, sonra aniden bu hatayı almaya başladı. Peki buna neden olan ne olabilirdi? Kod değiştirilmedi.
eetawil

21
Benim durumumda mimarımla eşleşmesi için "Any CPU" dan x64'e geçmek zorunda kaldım.
Rob Sedgwick

2
Karındeşen Jack yorumda değil cevabın kendisinde verilen çözümü ifade eder. Yüklemek 2007 Office System Driver: Data Connectivity Componentssorunu hemen çözdü.
ipek ateş

156

'Microsoft.ACE.OLEDB.12.0' sağlayıcısını kullanmanıza izin verecek olan 'Microsoft Access Database Engine 2010 Yeniden Dağıtılabilir'in 64 bit sürümü burada bulunabilir:
http://www.microsoft.com/en-us/ indir / details.aspx? id = 13255

Kabul edilen yanıttan indirmeyi kullanırsanız, @ backtestbroker.com tarafından işaret edildiği gibi x86 için derlemeniz gerekir.


18
VS 2012 kullanıyorsanız, projenin Özellikler >> Oluştur >> Genel yapılandırmasında "32-bit tercih et" onay kutusunun işaretli olmadığından da emin olun.
devstruck

3
VS 2008 kullanıyorum (sorma) ve post_erasmus 'ipucunu okuyana ve' Platform Hedefi'ni Özellikler >> Oluştur >> Uygulamamın genel yapılandırmasında x64 olarak ayarlayana kadar bu çözüm işe yaramadı. Sıralama, teşekkürler!
Kaynak

1
Bu yanıttaki bağlantı, 32 bitlik bir sürümü indirmenize ve yüklemenize de olanak tanır. Windows 7 64-bit'im olsa da, Visual Studio 2013'ün IIS Express'i varsayılan olarak 32-bit modunda çalışır ve 32-bit'te bazı Office 2013 bileşenleri yüklüdür, bu yüzden 32-bit kurulum ihtiyacım olan şeydir.
Eric Barr

1
Bu cevapla, Uygulama Havuzu'nda "32-Bit Uygulamaları Etkinleştir" seçeneğini Yanlış olarak ayarlamam gerekiyor.
16:26

1
Bu sorunumu çözdü. VS 2019 uygulamam, x64 kitaplığıyla sonuçlanan Herhangi Bir CPU kullanılarak derlendi. X64 Access DB Engine'i yüklememi engelleyen Office 2013'ün 32 bit sürümünü yükledim. Office'in x64 sürümünü yükledikten sonra x64 motorunu yükleyebildim ve şimdi her şey çalışıyor. DLL cehennem yaşıyor.
Mike Lowery

74

Uygulamayı (32 / 64bit) bağlı olarak sadece kurabileceğiniz bağlantıyı kullanarak

Özet:

  • 2007-2016'daki tüm ofisler "Microsoft.ACE.Oledb.12.0" sağlayıcısını içerir
  • uygulama mimarinize bağlı olarak uygun çalışma zamanı motorunu seçin (32/64) 6
  • hem 32 hem de 64bit kabuktan powershell komutu ile sağlayıcılarınızı kontrol edin :

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • ve sisteminizin hangi sağlayıcıyı kullanabileceğini göreceksiniz

uzun hikaye: dizeler http://live.sysinternals.com/strings.exe ile bulunabilir

Örneğin. 32bit sürücüleri yüklü bir 64bit sistemde

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"

yaklaşan ofiste bile 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

ipleri bulacaksın

  • Microsoft.ACE.OLEDB

  • Microsoft.ACE.OLEDB.12.0

Office 2013 ayrıca csi.dll ile birlikte gelir

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

" Microsoft.ACE.OLEDB.15.0 " dosyasını içeren

ve Ofis 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

" Microsoft.ACE.OLEDB.16.0 " sürümüne sahip


Nuget LinqToExcel kullanarak VS2015 bu hatayı aldım. Görünen o ki, x64 ACE'yi yüklediğim için, herhangi bir CPU'yu hedeflemek yerine açıkça x64 (Yapılandırma Yöneticisi) için oluşturmak zorunda kaldım.
subsci

Powershell, "Microsoft.ACE.Oledb.12.0" programının zaten kurulu olduğunu gösterdi. Ancak Access 2007 paketini ( 2007 Office Sistem Sürücüsü: Veri Bağlantısı Bileşenleri ) yüklemek beni harekete geçirdi. Zaten sistemimde: Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
Hangi sürümün kurulu olduğunu bildiren PowerShell betiği dahidir! Bernhard
Rob Bowman

bit offtopic ama bu basit powershell ODBC sürücüleri için:Get-OdbcDriver | select Name,Platform
Bernhard

Bu, 32-BIT Access 2016 çalışma zamanını indirerek 64 bit sunucu makinesinde benim için sorunu çözdü. Temelde güvenli tarafta olmak için 32 bit ile başlayın (projede bir şeyleri 64 bit'e değiştirmeye çalıştığınızda kötü şeyler olur).
Eric Mutta

45

Kontrol etmeniz gereken ilk şey, uygulamanızın yapı yapılandırmasıdır.

  • Eğer varsa x86 platformu altında projenizi inşa ardından sırayla makinenizde aşağıdaki paketleri yüklemeniz gerekir sorunu çözmek için:

    1. 'Microsoft.ACE.OLEDB.12.0' sağlayıcısını kullanmak için önce Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'i yüklemeniz gerekir , bu yüklemeye şu adresten ulaşılabilir: http://www.microsoft.com/download/en/details.aspx 8 id = 13255 .

      Yükleme tamamlandıktan sonra, uygulamanızı çalıştırmayı deneyin, eğer bu sorunu çözüyorsa, 2. adıma geçin.

    2. Bu sonraki adım, Office 2007'nin Veri Bağlantısı Bileşenleri olmasına rağmen Office 2010 için çalışan açıklanamayan bir çözümdür. Bunun neden çalıştığından emin değilim, ancak işe yarıyor ve neredeyse her durumda çalıştığı kanıtlandı. 2007 Office Sistem Sürücüsü: Veri Bağlantısı Bileşenleri'ni yüklemeniz gerekir , bu yüklemeye şu adresten ulaşılabilir: http://www.microsoft.com/download/en/confirmation.aspx?id=23734 .

      Bu yükleme tamamlandıktan sonra, uygulamanızı çalıştırmayı deneyin; bu işlem sorunu çözmelidir.

  • X64 veya AnyCPU platformu altında oluşturulmuş bir uygulamayı çalıştırmaya çalışıyorsanız , önce x86 platformunda beklendiği gibi çalıştığını doğrulamanızı öneririm. Bu x86 platformu altında çalışmadığı takdirde, ilk bölümdeki adımları uygulayın ve beklendiği gibi çalıştığını doğrulayın.

    OLEDB Veritabanı sürücüsü dahil MS Access sürücülerinin yalnızca x86 platformu altında çalıştığını ve x64 veya AnyCPU platformu altında uyumsuz olduğunu okudum. Ama bu yanlış gibi görünüyor. Uygulamamın x86 oluştururken çalıştığını doğruladım, daha sonra pasif bayrağı kullanarak Access Veritabanı Altyapısı'nı yükledim.

    1. İlk önce dosyayı yerel olarak indirin Kurulumu buradan indirebilirsiniz: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. '/ Passive' bayrağıyla komut istemini kullanarak yükleme. Komut isteminde aşağıdaki komutu çalıştırın: 'AccessDatabaseEngine_x64.exe / passive'

    Bu 2 adımdan sonra x64 veya AnyCPU derleme yapılandırmasını oluşturduktan sonra uygulamamı çalıştırmayı başardım. Bu sorunumu çözdü.

Not: Adımların sırası bir fark yaratıyor gibi görünüyor, bu yüzden lütfen buna göre takip edin.


5
Bir 32bit uygulamadan 64bit'e geçiş yaptığım bir problem yaşadım ve artık çalışmadı. Talimatlarınızın ikinci kısmı mükemmel çalışıyor! / pasif bayrağı bile 32bit Microsoft Office kurulumu sağlar.
Freddy

1
İpucu: AceRedist.msi ve Data.cab dosyalarını almak için AccessDatabaseEngine_x64.exe dosyasını bir klasöre çıkarın. Cmd istemini Yönetici modunda açın veAceRedist.msi /passive .
Jeremy Thompson

1
Çok teşekkürler. İlk seçenek benim için çalıştı. 32 bit Office'i kaldırmak için ne kadar güçlük çektiğimi hatırlıyorum ve sadece 64 bit ofis yükledikten sonra bu sorun daha önce düzeltiliyordu. Ancak bu 64 bit ofis bileşeni sihri yerine getirdi.
Biki

2 nokta yüzünden sabitledim. Çok teşekkür ederim. Bunu yüklemem gerekiyor microsoft.com/download/en/confirmation.aspx?id=23734 .
SENA

33

Yapılandırma Yöneticisi iletişim kutusundaki yapımı "x86" dan "Herhangi bir CPU" olarak değiştirdiğimde, Visual Studio 2010'da bu hatayı / özel durumu aldım. Anladığım bu OLEDB veritabanı sürücüsü sadece x86'da çalışıyor ve 64bit uyumlu değil. Derleme yapılandırmasını x86'ya geri döndürmek benim için sorunu çözdü.


5
OLEDB x64 ile uyumludur. HERHANGİ BİR x86 DEĞİL HERHANGİ bir platform altında çalışabilir, ancak Herhangi Bir CPU olarak da çalışabilir. Aşağıdaki tam cevaba bakın: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Visual Studio uygulamasında hata ayıklama altında aslında yapılandırma yöneticisinde herhangi bir CPU / x64 yerine x86 seçmeye yardımcı olur.
iknownothing

25

MS sürücülerini yükledim ve hala benim için çalışmadı. Sonra sorunu çözen bu blog gönderisini buldum . Oradan okuyun, aksi takdirde TLDR sumamary'si olarak şu iki görüntüyü kullanın (o yazıdan bağlantı):

resim açıklamasını buraya girin

resim açıklamasını buraya girin


Bu benim katkı olarak göndermek üzereydi. Bu benim sorunumdu. Çözümümdeki bir proje x86 derlendiğinden bu IIS ayarını dün değiştirirdim, bu yüzden tüm programı 32 bit olarak sınıflandıracağımı varsayıyorum.
Lee

Sunucum @ 64 bit çalışıyor ancak yüklenen MS Office Bileşenleri 32 bit. Bu benim sorunumu çözdü. Teşekkür ederim.
MarceloBarbosa

Çalışmak için ne inanılmaz zor bir şey :(, bunu powershell'de yazabilir ve sadece bir çeşit otomatik sunucu kurulum komut dosyasına entegre edip edemeyeceğinizi merak ediyorum?
David Rogers

@DavidRogers muhtemelen, ama PS'de uzman değilim, bu yüzden bana bunun için bakma! ;-)
Shaul Behr

@ShaulBehr Umarım bu başkalarına fikir verir, Kullandığım özel komut (Yükseltilmiş bir powershell / cmd penceresinde): "C: \ Windows \ System32 \ inetsrv \ ./ appcmd apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64: true "
David Rogers

16

64 bit kullanıyorsanız ancak AccessDatabaseEngine'i yükledikten sonra bile sorun yaşıyorsanız bu gönderiye bakın , sorunu benim için çözdü.

yani bu AccessDatabaseEngine'i kurmanız gerekiyor


15

Hala bundan etkilenen herkes için.

Hatayı alıyorum ...

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

... OP, Shailesh Sahu tarafından tarif edildiği gibi.

64bit Windows 7 kullanıyorum.

Sorunum PowerShell içinde komut dosyaları , ancak OP yazısına benzer bir bağlantı dizesi kullanıyor, bu yüzden umarım bulgularım C #, PowerShell ve "Microsoft.ACE.OLEDB" sürücüsüne dayanan herhangi bir dile uygulanabilir.

Bu MS forum iş parçacığında yönergeleri izledim: http://goo.gl/h73RmI

Önce 64bit sürümünü yüklemeyi, ardından bu sayfadan AccessDatabaseEngine.exe dosyasının 32bit sürümünü yüklemeyi denedim http://www.microsoft.com/en-us/download/details.aspx?id=13255

Ama yine de neşe yok.

Daha sonra PowerShell'de aşağıdaki kodu çalıştırdım (SQL Panda'nın sitesinden http://goo.gl/A3Hu96 )

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

... bana bu sonucu verdi (kısalık için diğer veri kaynaklarını kaldırdım) ...

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

Gördüğünüz gibi Microsoft.ACE.OLEDB var. 15 .0 (on beş) Microsoft.ACE.OLEDB değil.12 .0 (on iki)

Böylece, bağlantı dizgimi 15 olarak değiştirdim ve işe yaradı.

Yani, sürümün nasıl yumuşak kodlanacağını göstermek için hızlı bir PowerShell snippet'i ...

$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`";"

birden fazla ise, en son ACE sürümünü seçecek şekilde değiştirildi

Umarım, bunu bulan herkes şimdi hangi OLEDB sürümünün yüklü olduğunu kontrol edebilir ve uygun sürüm numarasını kullanabilir.


Merhaba, PowerShell ile Excel sayfalarını okumaya çalışıyorum. Excel dosyaları SharePoint belge kitaplığında depolanır ve sunucuda Excel yüklemesi yoktur. Windows Server 2008 R2 kullanıyorum. Office Sistem Sürücüsü: Veri Bağlantısı Bileşenleri'ni yükledim ancak sorgunuzu çalıştırdığımda Microsoft.ACE.OLEDB'yi göremiyorum. Bununla ilgili bir fikrin var mı? ve öneriniz var mı? Şimdiden teşekkürler.
doganak

3
Cevabı buldum. Sistem yöneticimizden MS Access Veritabanı Altyapısı'nı yüklemesini istemiştim. X86 sürümünü yüklemişti. PowerShell x86'da sorguyu yeniden çalıştırdığımda ACE.OLEDB'yi gördüm.
doganak

Harika PowerShell kodu. 64-bit sürümünü yüklememi engelleyen 32-bit sürümü (PowerShell listesinde görünmüyordu) vardı. 32-bit sürümü kaldırdığımda, "zaten 32-bit Office bileşenleriniz var ..." mesajı olmadan 64-bit sürümü yükleyebildim. 64-bit sürüm PowerShell listesinde göründü ve uygulamam çalışmaya başladı.
Doppelganger

13

Birçok cevap verilmiş olmasına rağmen, karşılaştığım sorundan henüz bahsedilmedi.

  • Senaryom : 64-Bit Uygulama, Win10-64, Office 2007 32-Bit yüklü.
  • 32-Bit Installer AccessDatabaseEngine.exe dosyasının MS'den indirildiği gibi yüklenmesi, başarılı olduğunu bildirir, ancak yukarıdaki kayıtlardan birinin Powershell Betiği ile doğrulandığı gibi yüklenmez.

  • 64 Bit yükleyicisinin AccessDatabaseEngine_X64.exe dosyasının yüklenmesi şok edici bir hata iletisi bildirdi:

resim açıklamasını buraya girin

Çok basit bir çözüm burada bir Autodesk sitesinde bulundu . Komut satırı dizesine / passive parametresini şu şekilde eklemeniz yeterlidir:

AccessDatabaseEngine_X64.exe / pasif

Kurulum başarılı, OleDb sürücüsü çalıştı.

OleDb ile işlediğim Excel dosyaları xlsx türündedir, EPPlus 4.5 ile üretilmiştir ve Excel 2007 ile değiştirilmiştir.


1
AccessDatabaseEngine_X64.exe her zamanki gibi yükleyebilirim ama 32 bit equilavent (AccessDataBaseEngine.exe) yüklemek için pasif parametre kullandım. Sonra nihayet Visual Studio 2019'dan Access veritabanına bağlanabildim.
VolkanOzcan

10

Office yüklemesinin bitmesine bağlı olarak Çözüm Platformunu "Herhangi Bir CPU'dan" x86 "veya" x64 "olarak değiştirmeniz gerekir.

Adımlar aşağıda verilmiştir:

  1. Solution Explorer'da Solution Dosyasına sağ tıklayın: resim açıklamasını buraya girin

    1. Yapılandırma Yöneticisi'ni tıklayın.
    2. Aktif Platform Açılır Menüsü'nü tıklayın, eğer x86 zaten varsa, bunu seçin, aksi takdirde Yeni'ye tıklayın. resim açıklamasını buraya girin

    3. Yeni platform açılır menüsünden x86 veya x64'ü seçin: resim açıklamasını buraya girin

Uygulamanızı derleyin ve çalıştırın.


6

Yüklü "AccessDatabaseEngine" yine de yardımcı olmazsa, aşağıdaki çözümdür:

Active Solution Platform'u "Any CPU" yerine "x86" olarak değiştirmeniz gerekir.

OLEDB Sağlayıcısı Yerel Makinede Kayıtlı Değil

CodeProject.com'dan


SADECE 'x86' DEĞİL, 'x64' olarak 'Herhangi bir CPU' olarak HERHANGİ bir platform altında çalıştırabilirsiniz. Aşağıdaki tam cevaba bakın: stackoverflow.com/a/32760211/3637582
Merav Kochavi

6

Bu makaledeki adımları izleyerek bunu çözebildim: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- on-the-yerel-makine

Benim için kilit nokta şuydu:

IIS ile hata ayıklarken,

Visual Studio varsayılan olarak 32 bit sürümünü kullanır. Bunu Visual Studio içinden Araçlar »Seçenekler» Projeler ve Çözümler »Web Projeleri» Genel'e gidip

"Web siteleri ve projeler için IIS Express'in 64 bit sürümünü kullanın"

Bu seçeneği kontrol ettikten sonra, projemin platform hedefini geri "Herhangi bir CPU" olarak ayarladıktan sonra (sorun giderme işleminde bir yere x86 olarak ayarlamıştım), hatayı aşmayı başardım.


1
Teşekkür ederim, diğer cevapların çoğu 32 bit'e inmek içindir, ancak bu 64 bit'e ilerlemenize yardımcı olur.
illinoistim

Çok teşekkür ederim aradığım şey bu.
Manoj Kalluri

6

Bir web projesinde hata ayıklarsanız, IIS Express'in , proje ayarlarınıza bağlı olarak 32 veya 64 bit olarak çalıştığından .

Goto

Araçlar> Seçenekler> Projeler ve Çözümler> Web Projeleri

ve oradan 'IIS Express'in 64 bit sürümünü kullan ...' seçeneğini işaretleyin (veya işaretini kaldırın).


1
Vay be birçok saat tryng diğer çözümler, sadece düzeltmek! teşekkürler
Hernaldo Gonzalez

5

İlk olarak sisteminizde hangi microsoft.ace.oledb.12.0 sürümünün kurulu olduğunu doğrulayın.

Aşağıdaki yolu işaretleyin: C: \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64 bit yüklü

Aşağıdaki yolu işaretleyin: C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --x86 bit yüklü

(X86) yüklüyse, yapılandırma yöneticisi kullanılarak çözüm platformunu x86 olarak değiştirin, x64 için x64 olarak değiştirin.

Mevcut değilse aşağıdaki bağlantıyı kullanarak yükleyin

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


3

, syp_dino

"Microsoft.ACE.OLEDB.12.0 'sağlayıcısı için önerdiğiniz benim için çözüm yerel makinede kayıtlı değil" hatası, Active Solution Platform'u "Any CPU" dan "x86" olarak değiştirmektir.

Bu adımları gerçekleştirdiğimde, çözümü yeniden oluşturduğumda, EXE'i yakalayıp ağa yerleştirdiğimde, her şey Windows 7 64 bit makinede sorunsuz çalıştı.


SADECE x86 DEĞİL herhangi bir platform altında, ancak Herhangi bir CPU olarak da çalıştırabilirsiniz. Aşağıdaki
yanıtıma

3

SSMS 2014 kullanarak bir excel dosya (xlsx) bir SQL Server DB'ye veri almaya çalışırken bu sorunu vardı.

2007 Office Sistemi Sürücü: Veri Bağlantı Bileşenleri yüklemek için beni hile yaptı.


... ve bu işe yaramazsa, "veri kaynağını seç" ekranının açılır listesinden farklı bir "Excel Sürümü" seçmeyi deneyin. stackoverflow.com/a/56171883/283895
tgolisch

@Taran Bağlantı kullanılamıyor
evry1falls

Bu dosyaya benziyor, ancak download.cnet.com/…
Taran

3

Aynı sorunla karşılaştım. Çözüm Özelliklerine gidin ve Herhangi bir CPU'yu x86 olarak değiştirin, bence bu işi yapacak.


3

2 adımı yapın: 1. bu menüde: proje -> proje özellikleriniz ... -> Derleme: "32-Bit'i tercih et" işaretini kaldırın 2. connectionString içinde: aşağıdaki gibi Genişletilmiş özelliklerden önce ve sonra işaretler yazın: Extended Properties = ' Excel 12.0 Xml; HDR = EVET '

                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;

Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'i yüklerken "32 bit'i tercih et" seçeneğinin işaretini kaldırmak benim için işe yarıyor gibi görünüyordu.
IT Suçlu

'32-Bit'i Tercih Et' seçeneğinin işaretini kaldırdım ve çalışıyordu !!!
user1584253

3

Bu yapılandırmalar 2020 yılının Ocak ayında yeni makine yapımımda çalıştı:

(Yalnızca 1 - x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 / passive bağımsız değişkeni ile birlikte yüklendi, VStudio oluşturma ayarları aşağıdaki bağlantı dizesiyle açıkça x64 olarak ayarlandı: Provider = Microsoft.ACE.OLEDB.16.0; Veri Kaynağı = D: ... \ MyDatabase.accdb

(2 - x64 veya x32) / passive bağımsız değişkeni ile yüklenmiş Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, aşağıdaki bağlantı dizesiyle PLUS AccessDatabaseEngine 2010 (32bit), VCP derleme ayarları AnyCPU olarak ayarlandı: Provider = Microsoft.ACE.OLEDB.16.0; Veri Kaynağı = D: ... \ MyDatabase.accdb

(Yalnızca 3 - x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) / passive bağımsız değişkeni ile birlikte yüklendi, VStudio derleme ayarları x86 olarak ayarlandı, aşağıdaki bağlantı dizesiyle: Provider = Microsoft.ACE.OLEDB.12.0; Veri Kaynağı = D: ... \ MyDatabase.accdb

ARIZA NOTLARI

Bağlantı dizesinde ACE.OLEDB.12.0 x64 sağlayıcısının kullanılması, yalnızca (1).

Visual Studio derleme ayarlarında AnyCPU kullanımı başarısız oldu (1). X64 ayarı gereklidir. Belki de bunun nedeni AnyCPU'nun Vstudio'nun derleme zamanında bir x32 ACE.OLEDB.nn.0 sağlayıcısı görmesi gerektiği anlamına gelir.

ACE.OLEDB.12.0 2016 x32 / pasif motor, etrafta x64 uygulama gördüğünde KURULMAZ. (ACE.OLEDB.12.0 2010 x32 / pasif yükleyici çalıştı.)

SONUÇLAR

X64 derleme ayarlarını kullanmak için 2016 x64 veritabanı motoruna ve ACE.OLEDB.16.0'a sahip olmanız gerekir bağlantı dizesi sağlayıcısına VE açık x64 derleme ayarlarına Ocak 2020'de Office 365 ile çalışmak seçeneğini kullanmak yüklemeleri kolaylaştırır. Bu ipucunu gönderen kişiye kredi verin!

AnyCPU kullanmak için hem ACE.OLEDB.12.0 2010 x32 motoruna hem de ACE.OLEDB.16.0 x64 motorlarına sahip olmam gerekiyordu. Bu şekilde Vstudio, "AnyCPU" derleme zamanında hem x32 hem de x64 motorlarını görebiliyordu. Sağlayıcı bağlantı dizesini x32 işlemi için ACE.OLEDB.12.0 veya x64 işlemi için ACE.OLEDB.16.0 olarak değiştirebilirim. Her ikisi de iyi çalıştı.

X86 derleme ayarlarını kullanmak için, 2010 x32 veritabanı motoruna ve ACE.OLEDB.12.0 bağlantı dizesi sağlayıcısına VE açık x86 derleme ayarlarına Ocak 2020'de Office 365 x32 ile çalışacak şekilde sahip olmanız gerekir .


2

Excel dosyasını okurken benzer bir sorunum var.

Sorunun tarihi:

Bellek gereksinimi nedeniyle son zamanlarda uygulamamızı 32 bit'ten 64 bit'e geçirdik. Bunun için pencerelerimizi 7 32-bit'ten 64-bit'e geçirdik. Ama yine de makinelerimize 32 bit ofis kurduk.

çünkü, Excel verilerini uygulamaya alırken bu sorunu yaşadık.

Çözüm,

Http://www.microsoft.com/tr-tr/download/details.aspx?id=13255 adresinin 64 bit sürümünü indirdim ve şu argümanla yükledim:

AccessDatabaseEngine_x64.exe / pasif

Herhangi bir kod değişikliği olmadan sorunum çözüldü.

Not:

64-bit işletim sistemi ve 64-bit ofislerde, işlevselliğim bu düzeltme olmadan iyi çalışıyordu. Bu düzeltme yalnızca uygulamamız üzerinde 32 bit ofis yüklü olan 64 bit işletim sisteminde 64 bit çalışırken gereklidir.


Ancak, Microsoft bu çözüme karşıdır. Bazı müşterilerim bu düzeltme nedeniyle diğer Office programlarında bozulma gözlemliyor.
Rahul Techie


1

Başkaları tarafından belirlenen talimatları izledim; bu düzeltme ekini yükleme, düzeltme ekini ve Microsoft Access Veritabanı Altyapısı 2010'u yükleme.

Benim sorunum aynı kütüphane (linq2sql) benim makinede 2 sitede kullanmak oldu; 1 çalışıyor ve 1 çalışmıyor.

Sonunda çalışmayan sitem için apppool gelişmiş ayarlarında "32 bit uygulamaları etkinleştirmek zorunda" bulundu.

Şimdi her şey iyi çalışıyor.


1

ayrıca bu adımları deneyebilir

SQL Server'da, 1.Bir veri tabanını açın 2. 'Sunucu Hedefi' seçeneğinde klişe 3. 'Bağlı Sunucular' içinde klişe 4. 'Sağlayıcılar'da klişe 5.' Microsoft.ACE.OLEDB.12.0 'da klişe 6.Tüm seçeneklerin işaretini kaldırın ve kapatın


1

Web uygulaması için sunucuya AccessDatabaseEngine'i yüklemeyi unutmayın .


1

Aynı sorunu yaşadım ama bu durumda microsoft-ace-oledb-12-0 sağlayıcısı zaten kurulmuş ve geliştirilen diğer uygulama için iyi çalışıyor.

Bu uygulama ve ben bir sorun vardı arasındaki fark eski uygulamalar " Yerel IIS " üzerinde çalışırken hata olan biri " IIS Express (Visual Studio'dan çalışan) idi. Yani yaptığım şey-

  1. Proje Adı'na sağ tıklayın.
  2. Özelliklere Git
  3. Sağdaki Web Sekmesine gidin.
  4. Sunucular altında Yerel IIS'yi seçin ve Sanal Dizin Oluştur düğmesine tıklayın.
  5. Uygulamayı tekrar çalıştırın ve işe yaradı.

1

Makineme Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'i yükledim, ancak hala Microsoft ACE OLEDB Sağlayıcısı alıyordum hatası .

Son zamanlarda Office 2016'ya yükselttiğimi hatırladım, bu yüzden Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'i yeniden yüklemeyi denemeliyim . Bu da makinemdeki sorunu çözdü.

Bu nedenle, MS Office'in farklı bir sürümüne yükseltme yaptıysanız veya MS Office'inizi tamir ettiyseniz / yeniden yüklediyseniz, diğer düzeltmeleri bulmak için zaman kaybetmeden önce Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'i yeniden yüklemeyi deneyin . İyi şanslar!


1

1.) ConnectionStrings.com ile bağlantı dizenizi doğrulayın .

2.) Doğru veritabanı motorunun kurulu olduğundan emin olun. Bunlar bana yardımcı olan iki veritabanı motoruydu.

Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir

2007 Office Sistem Sürücüsü: Veri Bağlantısı Bileşenleri

3.) Yapı hedef platformunuzun "Herhangi Bir CPU" olmasıyla ilgili bir sorun olabilir, "X86" (Özellikler, Yapı, Platform Hedefi) olması gerekebilir.


SADECE 'x86' DEĞİL, 'x64' olarak 'Herhangi bir CPU' olarak HERHANGİ bir platform altında çalıştırabilirsiniz. Aşağıdaki tam cevaba bakın: stackoverflow.com/a/32760211/3637582
Merav Kochavi

Tamam, benim için durumun böyle olduğunu sanmıyorum ... bu yüzden hala birisinin inşa hedefi platformunun sorunun bir parçası olabileceğinden bahsetmeye değer.
u8it

1

Bir ASP.NET uygulamasından ACE kullanmaya çalışırken bu hatayı alırsanız, bunun en olası nedeni 32 bit sürümlerden birini yüklemiş olmanızdır. Varsayılan olarak, 64 bit işletim sistemindeki IIS, uygulamaları 64 bit çalışan işlemde çalıştırır. 64 bit işlemler 32 bit DLL'leri yükleyemez. ACE sağlayıcısına bir çağrı yapıldığında, 64 bit işlem bir 64 bit DLL bulmaya çalışır. Yoksa, sizi buraya getiren hata mesajını alırsınız.

Bu durumda iki seçeneğiniz vardır. İlk olarak, 2010 64 bit sürümünü yükleyebilirsiniz. 2007 32 bit sürümü yüklüyse, 2010 64 bit sürümünü yanına kolayca yükleyebilirsiniz. 2010'un 32 bit sürümü yüklüyse, yüklemeyi kaldırmanız ve bunun yerine 64 bit 2010 sürümünü indirip yüklemeniz gerekir. 2010 sağlayıcısının hem 32 hem de 64 bit sürümlerini aynı anda yükleyemezsiniz. Yüklemeyi geliştirme makinenizde gerçekleştiriyorsanız, varolan Office yüklemelerinin bitimi nedeniyle de kısıtlanmış olabilirsiniz.

İkinci seçenek, 32 bit uygulamaları etkinleştirmek için IIS'deki uygulama havuzunu değiştirmektir. IIS'nin tam sürümünü kullanıyorsanız, bunu yapmak için yönetim aracını kullanabilirsiniz (Denetim Masası »Yönetimsel Araçlar» Internet Information Services (IIS) Yöneticisi).

Daha fazla anlayış için lütfen aşağıdaki bağlantıya bakın


1

Bir Excel dosyasından MS-SQL'e veri alırken bu hatayı aldım. Sağlayıcı zaten yüklü (64 bit) ve bu neden işe yaramadığını şaşırttı. Yani tüm yaptığım burada kullanılan Import / Export uygulamasını bulmak yani .EXE. Ve buldum

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

Sonra veri alma gerçekleştirmek için doğrudan .exe çalıştırdı. Ve işe yaradı!


Hm, orada birkaç sürümüm vardı, SSMS yanlış olanı kullanıyor olmalı.
SteveCav

1

Bu benim için çalıştı.

  1. Bu sayfayı ziyaret edin ve bilgisayarınız için uygun olan paketi indirin (AccessDatabaseEngine.exe veya AccessDatabaseEngine_X64.exe)
  2. Bunu yükleyin.
  3. Enjoye ... Kodlarınız şimdi çalışıyor ...

Ancak uygulama paketiniz için aşağıdaki çözümlerden herhangi birini kullanabilirsiniz:

  1. "C: \ Program Files (x86) \ Common Files \ microsoft shared" veya "C: \ Program Files \ Common Files \ Microsoft Shared" klasörüne gidin ve "OFFICE14" dizinini paket dosyanızla aynı konuma yerleştirin.

Veya

  1. Kurulum paketinize iki proje (madde1'de) ekleyin.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.