2009-07-29 3 views
6

J'essaye de faire fonctionner un nouveau site DotNetNuke sur notre serveur 64 bits, et je m rencontrant le message d'erreur suivant:"Le fournisseur 'Microsoft.Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale" ... DNN

« le fournisseur « Microsoft.Jet.OLEDB.4.0 » est pas enregistré sur la machine locale »

Je sais par expérience que vous rencontrez quand vous ciblez un 64- Assemblage de bits sur une machine 64 bits (il n'y a pas actuellement de fournisseur OLE-DB 64 bits). Dans ce cas, je cible simplement le x86 dans Visual Studio et tout fonctionne correctement.

Mais dans ce cas, le site utilise la compilation dynamique, il n'y a donc pas d'endroit simple pour spécifier que j'ai besoin de cibler x86. Des pensées?

TIA.

+0

Je sais que c'est probablement une question bête, mais la version correcte de MDAC est-elle installée sur le serveur? – David

+0

Oui, pas une question stupide. J'ai un tas d'autres sites qui tournent ici, mais ils n'utilisent pas la compilation dynamique, et je ne pense pas qu'ils utilisent Jet non plus. Dans tous les cas, les DLL sont réellement présents sur la boîte, et de la version compatible avec 2003 SP2. –

+0

Pourquoi essaie-t-il d'utiliser Jet/OLEDB?Il devrait aller directement à SQL Server. Qu'est-ce que vous utilisez pour votre chaîne de connexion? – EfficionDave

Répondre

7

Vous pouvez modifier le pool d'applications sur lequel vous exécutez ce site pour l'exécuter en tant qu'application 32 bits. Dans le gestionnaire IIS7, sous "Paramètres avancés" de votre pool d'applications, puis définissez "Activer les applications 32 bits" sur true.

Vous pouvez aussi le faire avec AppCmd à partir d'une console avec les éléments suivants:

appcmd apppool set /apppool.name:MyNukeSite /enable32BitAppOnWin64:true 

Dans IIS6 - vous pouvez essayer quelque chose comme ça (2 lignes ici, exécutez aspnet_regiis lorsque vous avez terminé de modifier la valeur de métabase) .. .

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1 
aspnet_regiis.exe -i 

Voir les éléments suivants pour plus d'informations:

+0

On dirait que nous sommes définitivement sur la bonne voie, mais c'est IIS 6.0. Est-ce quelque chose que je peux modifier directement dans la métabase? –

+0

+1 pour SO aidant à résoudre mon obscur problème encore une fois. Merci! – Mercurybullet

+0

+1 pour les informations appcmd – TheVillageIdiot

3

HI, maintenant Microsoft a publié la version bêta du pilote Office System 2010: Composants de connectivité de données qui est pris en charge à la fois en 32 bits ainsi que 64 OS bits. Donc, en utilisant ce pilote au lieu du pilote Microsoft.Jet.OLEDB.4.0 traditionnel, nous aurons une application 64 bits fonctionnant sur un serveur 64 bits (c'est ce dont nous avons vraiment besoin).

Bien que ce soit en version bêta, cela a bien fonctionné pour moi.

Vous pouvez télécharger ce pilote de 2010 Office System Driver Beta: Data Connectivity Components

Thnks

1

Vous ne devriez pas essayer de cibler votre application à 32 bits dans ce cas, vous perdez les avantages de l'utilisation du système 64 bits. Comme aaa l'a souligné, vous pouvez utiliser le dernier Access Database Engine 2010 pour résoudre ce problème. Veuillez vous référer au my blog post pour une solution complète.

Espérons que ça aide.

Questions connexes