Fournisseur OLE DB ' Microsoft.Jet.OLEDB.4.0' ne peut pas être utilisé pour les requêtes distribuées

Je veux importer des données D'Excel vers SQL Server en utilisant des requêtes, pas en utilisant un assistant. J'ai essayé cette requête:

Select * INTO g FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:new.xlsx;HDR=YES', 'SELECT * FROM [newSheet$]');

, Mais, je reçois cette erreur:

Msg 7308, Niveau 16, État 1, Ligne 1
Fournisseur OLE DB ' Microsoft.Jet.OLEDB.4.0 ' ne peut pas être utilisé pour les requêtes distribuées car le fournisseur est configuré pour s'exécuter en mode appartement mono-thread.

J'ai Donc cherché sur Google, et j'ai eu des réponses comme:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

Même après reconfiguration, il est me montrant la même erreur...

22
demandé sur Peter Mortensen 2014-02-26 09:03:12

2 réponses

Selon ce fil,:

Microsoft.Jet.OLEDB.4.0 n'est pas pris en charge pour le système d'exploitation 64 bits

En supposant que vous exécutez SQL Server 64 bits, vous avez probablement besoin du 64 bits Microsoft Access Database Engine 2010 Redistribuable.

Et sachez qu'il y a une ride mineure lorsque vous essayez d'installer le logiciel si l'autre version est déjà installée. Dans ce cas installez la deuxième version à partir de la ligne de commande en utilisant le /commutateur passif . Selon Ce fil :

Le lancement de L'installation D'un fournisseur Microsoft ACE OLEDB sur une machine avec une installation Office Autre que celle en cours (par exemple 32 sur 64) entraînera l'échec de l'installation. Pour l'exécuter correctement, vous devez le lancer à partir d'une ligne de commande avec l'argument "/passif" spécifié.

Cela parle d'une installation Office existante mais la même chose s'applique au moteur de base de données coexistant installation.

EDIT: assurez-vous également d'utiliser " Microsoft.ACE.OLEDB.12.0 " pas " Microsoft.Jet.OLEDB.4.0" pour la chaîne de fournisseur. (Accessoires à @ Rumi)

30
répondu agentnega 2016-03-09 17:37:20

Utilisez SQL comme ci-dessous:

  SELECT * into temptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 12.0;Database=D:\new.xlsx','select * from [sheet1$]')
-1
répondu Nitu Bansal 2016-12-06 19:57:16