Microsoft.Jet.OLEDB.4.0 sağlayıcısı yerel makinede kayıtlı değil.

32 bit Windows 2008 sunucusunda .NET 3.5'te geliştirilen bir Windows uygulaması oluşturdum. 64 bit sunucuda bir uygulama dağıtırken, "Microsoft.Jet.OLEDB.4.0 sağlayıcı" yerel bilgisayarda kayıtlı değil "hatasını gösteriyor.

Bu nedenle, bu soruna bir çözüm olarak, projenin build özelliğini X86 olarak değiştirdim, bu yüzden 32 bit modda inşa edip projeyi 32 bit bir makinede yeniden inşa edeceğim. Ancak aynı projede diğer veritabanlarına bağlanmak için diğer DB sürücüleri (DB2, SQL, vb.) Kullanılır. Bu nedenle, uygulamamı 64-bit bir işletim sistemine tekrar dağıttığımda, "32-bit bir platformda 64-bit bir derlemeyi yüklemeye çalışmak" istisnası yaratıyor.

Excel'i (.xls) okumak ve yazmak için Microsoft.Jet.OLEDB.4.0 sürücüsünü kullanıyorum.

171
02 янв. neo 02 Ocak ayarlandı 2010-01-02 16:52 '10 16:52 2010-01-02 16:52
ответ 21 cevaplar

Bu soruna bir çözüm buldum. Sorumu açıkladığım sorun, Microsoft.Jet.OLEDB.4.0 sürücüsünün 64 bit işletim sistemindeki uyumsuzluğu nedeniyle ortaya çıktı.

Bu nedenle, 64 bit bir sunucuda Microsoft.Jet.OLEDB.4.0 sürücüsünü kullanırsak, uygulamamızı 32 bit kipte çalışmaya zorlamamız gerekir (bu bilinen sorun için kapsamlı bir arama yaptığımda bulduğum cevap budur) ve bu kodumun başka bir bölümünü kırar.

Neyse ki, Microsoft şimdi Microsoft.Jet.OLEDB.4.0 sürücüsünün yerine kullanılabilen 64-bit uyumlu 2010 Sistem Sistem Sürücüsünü sundu. Hem 32 bit hem de 64 bit sunucularda çalışır. Excel dosyalarını işlemek için kullandım ve her iki ortamda da benim için iyi çalıştı. Ancak bu sürücü BETA'da .

Bu sürücüyü Yeniden Dağıtılabilir Erişim Veritabanı Motoru 2010'dan indirebilirsiniz.

217
02 янв. Cevap verilen cevap neo 02 Jan 2010-01-02 19:13 '10, 19:13 2010-01-02 19:13

Sorun ASP.NET'te devam ederse, tek yapmam gereken "Uygulama havuzu için gelişmiş ayarlar" bölümündeki "32 bit uygulamaları etkinleştir" seçeneğini "Doğru" olarak değiştirmek oldu.

border=0
107
25 авг. Cevapla Jason Wicker 25 Ağu 2011-08-25 00:26 '11 0: 26 2011-08-25 00:26

Bende de aynı problem var

Sağlayıcı Microsoft.Jet.OLEDB.4.0 'yerel makinede kayıtlı değil

Yeni yanıtı uyguladım, ancak sağlayıcıyı "Provider = Microsoft.ACE.OLEDB.12.0;" ile değiştirinceye kadar çalışmadı . Bağlantı dizesinde

Birisi aynı sorunla karşılaşırsa bu yardımcı olur umarım.

42
20 апр. Cevap İkbal tarafından 20 Nisanda verildi. 2013-04-20 09:28 '13 9: 28 2013-04-20 09:28

Aynı mesaja sahibim, Visual Studio 2010'da bir web sayfam var, Bu sayfadaki .xls dosyasını okudum, yerel yerel IIS lokasyon sağlayıcısına koyduğumda görsel projemde sorun yok ' Microsoft.Jet.OLEDB.4.0 'yerel bilgisayarda kayıtlı değil , bu sorunu aşağıdaki gibi düzelttim:

1.-IIS'yi açın
2. - appPool'ü Gelişmiş Seçenekler olarak değiştirin
3. 32-bit uygulamayı etkinleştirmek için true .

ve hepsi bu

ps.I etkin bir çözüm platformunda Configuration Manager'ı X86 olarak değiştirdim.

18
07 июня '12 в 1:57 2012-06-07 01:57 Cevap leo tarafından 07 Haziran '07'de 01:57 2012-06-07 01:57 tarihinde verilmiştir.

Bunların oldukça eski sorular olduğunu biliyorum ve pek çok kişi cevapladı. ama anlamak için bazı şeyleri özetlerim:

Dosya uzantısı xls ve işletim sistemi 32 bit ise, yalnızca " Microsoft.Jet.OLEDB.4.0 " kullanabilirsiniz. Microsoft, bu sürücünün 64 bit sürümünü yayımlamamıştır.

Dosya uzantısı xlsx veya OS 64 bit ise, " Microsoft.ACE.OLEDB.12.0 " kullanmanız gerekir. 32/64 bit modunda derlenen bir uygulama, sürücü seçimini etkilemez.

Her zaman 64 bit işletim sistemine 64 bit Microsoft.ACE.OLEDB.12.0 sürücüsünü yükleyin. Office 32 bitini zaten ayarladıysanız, sürücüyü cmd'den / passive argümanı ile çalıştırmanız gerekir. Bu kesmek yalnızca Office 2013'e kadar çalışır, Microsoft bu geçici çözümü Office 2016'dan Microsoft.ACE.OLEDB.16.0 sürücüleri için durdurmuştur.

 AccessDatabaseEngine_x64.exe /passive 

Microsoft.ACE.OLEDB.12.0 Sürücüleri İndirme

 private void ProcessFile(string path) { string connString = string.Empty; if (Path.GetExtension(path).ToLower().Trim() == ".xls"  Environment.Is64BitOperatingSystem == false) connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; else connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; } 

Uygulama AnyCPU bayrağıyla derlenirse, 64 bit işletim sistemindeki 64 bit erişim sürücülerini ve 32 bit işletim sistemi için 32 bit erişim sürücülerini arar.

16
11 марта '16 в 12:11 2016-03-11 12:11 Cevap Romil Kumar Jain olarak verilir 11 Mart '16, 12:11 2016-03-11 12:11

Uygulamanız localIIS'de çalışıyorsa, AppPool Gelişmiş Seçeneklerine 32 bit uygulamalar ekleyerek bu sorunu çözebilirsiniz

2019

08 дек. Cevap Mumin Ka tarafından 08 Aralık'ta verildi. 2016-12-08 14:30 '16, 14:30 - 2016-12-08 14:30

Ben de aynı problemi yaşadım. Uygulamanın yapılandırmasını x86 , sonra çalışacak!

7
07 февр. Cevap Kakopappa 07 Şub. 2012-02-07 16:43 '12, 04:43, 2012-02-07 16:43

Proje özelliğimi x64 biçiminde değiştirdim

Proje ---> Özellikler ---> Yapı ---> Hedef Yapı ---> X64

6
09 авг. Cevap Yazan Muhamed Shafeeq 09 Ağu. 2012-08-09 14:28 '12, 14:28 2012-08-09 14:28

Masaüstü uygulamamda bu sorunla karşılaştım (Microsoft.Jet.OLEDB.4.0 sağlayıcısı yerel bilgisayarda kayıtlı değil). 32 bit uygulama oluşturma yeteneğim yoktu. Aynı durumda başkalarına yardımcı olacağını umuyorum.

Aşağıdakileri yaptım ve sorun kayboldu:

2
14 янв. cevabın robinhood9 verilir 14 Oca 2016-01-14 15:57 '16, 15:57 2016-01-14 15:57

Bağlantı dizesini değiştirdim

var myConnectionString = string.Format ("Sağlayıcı = Microsoft.Jet.OLEDB.4.0; Veri Kaynağı = {0}; Güvenlik Bilgisi Persist = True; Jet OLEDB: Veritabanı Şifresi =;", gisdbPath);

:

var myConnectionString = string.Format ("Sağlayıcı = Microsoft.Jet.OLEDB.4.0; Mod = Paylaşım Reddetme Yok; Veri kaynağı = {0}; kullanıcı kimliği = Yönetici; şifre =;", gisdbPath);

Çalışıyor, hiç Microsoft.Jet.OLEDB.4.0’a kaydolmak istemedim.

1
17 марта '16 в 6:25 2016-03-17 06:25 Cevap Dilhan RK tarafından 17 '16 Mart tarihinde 06:25 tarihinde düzenlendi 2016-03-17 06:25

Sadece makinenize göre özelliği değiştirin ve her şey yapılır: -)

Proje ---> Özellikler ---> Yapı ---> Hedef Yapı ---> X64

veya

Proje ---> Özellikler ---> Yapı ---> Hedef Yapı ---> X86

1
10 янв. Cevap Ajmal 10 Ocak verilir 2015-01-10 09:23 '15 9:23 2015-01-10 09:23

Masaüstü uygulamasında bu sorunla karşılaştık.

Dev Ortam: Windows 7 Ultimate - 64 bit. Net Framework 4.5 Sağlayıcısı = Microsoft.Jet.OLEDB.4.0

Bu, X86 platformunun hedef platformunu herhangi bir işlemciden değiştirerek çözüldü. Proje Özellikleri → Yapı → Platform Amaç.

2019

06 июля '17 в 17:23 2017-07-06 17:23 Cevap Techvalens tarafından 06 Temmuz 17, 17 : 23'te verilmiştir 2017-07-06 17:23

IIS uygulama havuzu için gelişmiş ayarlardaki değişiklikler. Gerekli 32 bit uygulama

1
04 авг. Cevap dpsrikanth 04 ağustosta verildi . 2013-08-04 05:40 '13 5:40 2013-08-04 05:40

Daha iyi bir çözüm, yukarıda önerildiği gibi, sadece yeniden derlemek olsa da, bu, kaynak koduna erişim gerektirir. Benim durumumda sadece hazırım .exe'e sahibim ve bu çözümü kullanmak zorunda kaldım. Uygulamanın indirme özelliklerini değiştirmek için .Net CorFlags.exe kullanır.

  • SDK.Net Framework'ü indirin (şahsen 3.5 kullandım, ancak kullanılan sürüm uygulamanız için gereken .Net'te veya üstünde olmalıdır.
  • Yüklerken, ihtiyacınız olan CorLibs.exe şey CorLibs.exe , bu yüzden sadece Windows geliştirme araçlarını yükleyin.
  • Yüklemeden sonra CorFlags.exe bulun. .NET Framework 3.5 SDK'yı yüklemem için, C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin .
  • Bir komut istemi açın ve path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+ .

Sen bittin! Bu, programınızın ilk bayraklarını 32 bit WOW64 modunda başlayacak ve bu nedenle microsoft.jet.oledb.4.0 dosyasına erişebilecek şekilde ayarlar.

0
27 июля '17 в 0:13 2017-07-27 00:13 Cevap 27 Temmuz 'da Cullub' da veriliyor 0:13 2017-07-27 00:13

Uygulamayı yeni bir sunucuya dağıtırken bu sorunun tekrar tekrar ortaya çıktığını biliyorum, çünkü bu sürücüyü Excel dosyasına bağlanmak için kullanıyorum. Demek son zamanlarda yaptığım şey bu.

Windows Server 2008 R2 var, 64 bitlik bir makineye erişim sürücüleri yüklüyorum ve bu mesajdan kurtuldum, bu da beni sadece başka birine rastlamaktan çok mutlu ediyor.

Aşağıda, dev makinemle çalışmanın ayrıntılı bir açıklaması verilmiştir, ancak sunucuda en son ODBC sürücülerini yükledikten sonra bile bir hata oluşuyor, sanırım sorun bu ama bu nasıl çözdüm.

 private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\""; 

Yeni tedarikçiyi şu şekilde değiştiriyorum:

 private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';"; 

Ama benim yaptığım gibi, farketmen gereken bir şey var. .Xlsx uzantılı ve Excel sürümlerini kullanma - 12.0.

Bu hata iletisine girdikten sonra Hata: "Yüklenebilir ISAM bulunamadı" , aşağıda gösterildiği gibi bazı şeyleri değiştirmeye karar verdim:

 private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';"; 

ve evet, bu nahoş olayı bitirdim, ama burada başka bir mesaj daha aldım : Microsoft Access veritabanı motoru açamıyor veya "time_zone" dosyasına yazamıyor. Özel olarak başka bir kullanıcı tarafından açıldı veya verilerini görüntülemek ve kaydetmek için izne ihtiyacınız var. ki bu onun kararından uzak olmadığımı söylüyor.

Belki de bu arada dosyayı açan başka bir işlem var ve tek yapmam gereken yeniden başlatma ve beklendiği gibi her şey sorunsuz başlayacak.

0
25 авг. Cevap Nick 25 Ağustos verilmiştir . 2015-08-25 11:56 '15 11:56, 2015-08-25 11:56

Windows 8.1'imde "SQL Server 2014 Verilerini İçe ve Dışa Aktar (64-bit)" çalıştırdığımda da aynı istisnayı aldım.

Bu sorunu çözmek için aşağıdakileri yaptım

SQL Server 2014 başlatıldı 64 bit yerine veri alma ve verme (32 bit) ve bu benim için çalışıyor. IIS ayarlarını değiştirmedim ve ek bir yazılım yüklemedim.

0
15 марта '15 в 17:34 2015-03-15 17:34 Cevap Banketeshvar Narayan 15 Mart 15: 15'te 17:34 2015-03-15 17:34

IIS'nin eski sürümlerinde, Advance Settings bulamazsınız; bu nedenle, Enable 32-bit Applications için aşağıdaki komutları çalıştırmanız gerekir:

cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1

ve

% SYSTEMROOT% \ Microsoft .NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i

Bağlantı: İşte

0
21 янв. cevabı Usman Khalid tarafından verildi. Jan 21 2015-01-21 14:23 '15, 14:23 2015-01-21 14:23

VS2013'ü Winforms için kullanıyorum, aşağıda benim için çalıştı.

25 дек. Cevap 25 Aralık'ta bir Gazel tarafından verildi. 2014-12-25 21:38 '14 21:38 2014-12-25 21:38
0
05 апр. Cevap Anant Dabhi tarafından verildi 05 Nis 2014-04-05 23:45 '14, 23:45 2014-04-05 23:45

Jet için 64 bit sağlayıcı yok. Excel için Jet de dahil olmak üzere birden fazla veritabanı kaynağını desteklemek istiyorsanız, 32 bitlik işlemi çalıştırmak için uygulamanızın en azından bu bölümüne ihtiyacınız olacak.

X86 için derlenen hata biraz garip. Bu durumda 64-bit meclislere nasıl atıfta bulunduğunuzu anlamıyorum.

-2
02 янв. Cevap Anthony WJones 02 Ocak'ta verildi. 2010-01-02 17:16 '10, 17:16 2010-01-02 17:16

En basit çözüm "Project Properties" e gitmek ve x86 için yapı hedefini herhangi bir CPU'dan ayarlamaktır.

-2
17 июня '16 в 23:08 2016-06-17 23:08 Cevap Cyril Gupta tarafından 17 Haziran 16'da 23:08 2016-06-17 23:08 tarihinde verilmiştir.

etiketleriyle ilgili diğer sorular veya bir soru sorun