web-dev-qa-db-fra.com

Microsoft.ACE.OLEDB.12.0 n'est pas enregistré

J'ai un travail SQL Server qui s'exécute tous les mois et qui s'exécute sur le serveur. Job utilise un package SSIS et est supposé extraire les données de la base de données, créer une feuille Excel et copier les données dans Excel 2003.

En fait, la base de données contient environ 140 000 lignes en raison d'un problème de troncature dans Excel 2003 (Excel prend en charge 64 000 lignes). J'ai donc modifié le fichier de configuration pour prendre en charge le format Excel 2007.

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="  +  @[User::FullPath]  + ";Extended Properties=\"Excel 12.0;HDR=YES\"

Mais lorsque j'essaie d'exécuter le travail, le message d'erreur suivant n'apparaît pas:

"Le fournisseur de base de données demandé OLE Microsoft.ACE.OLEDB.12.0 n'est pas enregistré")

43
user3330998

Résumé: INSTALLER version 32 bits de moteur de base de données Microsoft Access 2010 redistribuable . Désinstallez la version 64 bits si elle était déjà installée. http://www.Microsoft.com/en-us/download/details.aspx?id=13255

Le gestionnaire de connexions Excel essaie d'utiliser le fournisseur de base de données OLE ALE pour accéder au fichier Excel lorsque la version est supérieure à 2007 (xlsx). Bien que votre boîte soit en 64 bits, Utilisation de SQL Server Data Tools, une application 32 bits. Il n'existe pas de version 64 bits pour SSDT. Lorsque vous concevez votre package dans SSDT, vous utilisez un processus 32 bits, qui ne peut utiliser que des fournisseurs 32 bits. Lorsque vous essayez de choisir la table dans le fichier Excel, le gestionnaire de connexions doit accéder à la version 32 bits du fournisseur de base de données ACE OLE, mais ce fournisseur n'est pas enregistré sur votre ordinateur, seule la version 64 bits est installée.

Vous devez télécharger la version 32 bits de "Microsoft Access Database Engine 2010 Redistributable". Lorsque vous essayez de l'installer, vous pourriez recevoir un message d'erreur. Commencez par désinstaller uniquement la version 64 bits du "Microsoft Access Database Engine 2010 Redistributable", que vous avez probablement déjà installée. La version 64 bits et la version 32 bits ne peuvent pas cohabiter sur le même hôte. Vous devrez donc désinstaller (via "Programme et fonctionnalités") et installer l’autre si vous souhaitez basculer entre eux.

Une fois que vous avez terminé de désinstaller la version 64 bits et d'installer la version 32 bits du fournisseur, le problème est résolu et vous pouvez enfin choisir la table dans le fichier Excel. Le gestionnaire de connexions Excel est maintenant en mesure d'utiliser le fournisseur de base de données (version 32 bits) de l'ACE OLE) pour accéder au fichier Excel.

63
AlejandroR

Il y a une autre manière. Ouvrez le fichier Excel dans Microsoft Office Excel et enregistrez-le sous "Classeur Excel 97-2003". Ensuite, utilisez le nouveau fichier Excel enregistré dans votre connexion de fichier.

9
ChinaHelloWorld

Une autre option consiste à exécuter le package en mode 32 bits. Cliquez sur la solution => propriétés =? Débogage => Définir une exécution en 64 bits sur false.

6
Tara

J'ai installé le "Moteur de base de données Microsoft Access 2010 Redistribuable" comme indiqué ci-dessus et j'ai eu des problèmes de dépannage peu connus lorsqu'il s'agissait d'un problème de version.

L'installation de "Pilote Office System 2007: Composants de connectivité de données" l'a triée pour moi.

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

6
Luke Puplett

Je pense que vous pouvez vous en tirer en installant simplement les pilotes OLEDB - http://www.Microsoft.com/en-us/download/details.aspx?id=13255

5
TMNT2014

La solution la plus simple pour moi était de changer le travail de l'agent SQL pour qu'il s'exécute au moment de l'exécution 32 bits. Sélectionnez Travail SQL> Propriétés du clic droit> étape> édition (étape)> onglet Options d'exécution> utilisation du runtime 32 bits.

capture d'écran

5
wiciuo

J'ai suivi les instructions pour utiliser le commutateur/passive ici , après avoir téléchargé le moteur de base de données Access 64 bits. J'exécute le modèle tabulaire SSAS Office 32 bits dans SQL Server 2012. Lorsque j'ai téléchargé et exécuté le moteur de base de données Access 64 bits, un message m'avait dit que je ne pouvais pas l'installer sans désinstaller Office 2010 au préalable. le commutateur/passif semble avoir résolu ce problème (je peux maintenant importer des classeurs Excel et des tableaux Access dans un modèle tabulaire).

3
Andy Brown

Vous avez probablement installé les pilotes 32 bits pour que le travail soit exécuté en 64 bits. Plus d'infos: http://Microsoft-ssis.blogspot.com/2014/02/connecting-to-Excel-xlsx-in-ssis.html

3
Joost

J'obtenais cette même erreur après avoir précédemment pu effectuer des opérations similaires. Je n'ai pas essayé de télécharger les packages mentionnés car je ne les avais pas auparavant et les choses fonctionnaient bien. Le personnel informatique de mon travail a effectué une "réparation" sous Microsoft Office 2013 (Panneau de configuration> Programmes> Ajouter/Supprimer - Sélectionnez Modifier puis Réparer). Il a fallu quelques minutes pour terminer mais tout a été corrigé.

1
smk081

La solution la plus simple que j'ai trouvée consistait à spécifier Excel version 97-2003 dans la configuration du gestionnaire de connexions.

1
Jason Meyer

Il suffit d'installer la version 32 bits d'ADBE en mode passif:

exécutez cmd en mode administrateur et exécutez le code suivant:

AccessDatabaseEngine.exe/passif

http://www.Microsoft.com/en-us/download/details.aspx?id=13255

0
Shahram Sohrabi