J'essaie d'exporter de mes données Table
dans les requêtes Excel
à T-SQL
. Après de petites recherches, je suis venu avec cette
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=G:\Test.xls;',
'SELECT * FROM [Sheet1$]')
SELECT *
FROM dbo.products
Quand j'exécute la requête ci-dessus, j'obtiens cette erreur
Msg 7302, Niveau 16, État 1, Ligne 7 Impossible de créer une instance de OLE Fournisseur de base de données "Microsoft.Jet.OLEDB.4.0" pour le serveur lié "(null)".
Alors passé par internet pour solution, obtenu le lien ci-dessous
Dans le lien ci-dessus, ils disaient que nous devions être un administrateur pour créer un dossier dans le dossier C lecteurTEMP
puisque OPENROWSET
crée des fichiers ou un dossier dans le dossier TEMP
.
Je le fais dans My Home PC et je suis l'administrateur. Je reçois toujours la même erreur.
SQL SERVER détails
Microsoft SQL Server 2016 (RC1) - 13.0.1200.242 (X64) 10 mars 2016 16:49:45 Copyright (c) Évaluation de Microsoft Corporation Enterprise Edition (64 bits) sous Windows 10 Pro 6.3 (version 10586:)
Tous les indicateurs pour résoudre le problème seront très appréciés
Mise à jour: J'ai déjà configuré le Ad Hoc Distributed Queries
et
Exécuté les requêtes ci-dessous
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
maintenant je reçois cette erreur
Msg 7438, niveau 16, état 1, ligne 7 Le fournisseur de base de données OLE 32 bits "Microsoft.Jet.OLEDB.4.0" ne peut pas être chargé en cours de processus sur un SQL 64 bits Serveur.
OK, j’ai fait en sorte que cela fonctionne pour moi et il semble que SO me laisse poster aujourd'hui.
J'ai le serveur MS SQL 2012 et Office 2013. Cela semble être très difficile, vous devrez peut-être vous adapter à vos versions.
Microsoft.ACE.OLEDB
comme ceci:Voici les commandes SP_CONFIGURE:
SP_CONFIGURE 'show advanced options', 1;
GO
RECONFIGURE;
SP_CONFIGURE 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
Assurez-vous d’enregistrer msexcl40.dll comme ceci:
regsvr32 C:\Windows\SysWOW64\msexcl40.dll
Découvrez sp_configure/RECONFIGURE ...
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
Voir ces liens pour plus d'informations:
https://technet.Microsoft.com/en-us/library/aa259616(v=sql.80).aspx
Travaux !!! Merci beaucoup ... juste pour le serveur Win 64 bits 2012R2. Permettez-moi de mettre tout le script de travail en répétant partiellement des éléments d'en haut, qui ne sont pas faciles (pour moi) à combiner:
1) Téléchargez la version 64 bits de Microsoft.ACE.OLEDB.12.0 pour Windows disponible ici: https://www.Microsoft.com/en-us/download/details.aspx?id=13255
2) Créez un fichier Excel avec les colonnes respectives (nom et classe dans ce cas).
3) Exécuter le code ci-dessous:
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
/* -- Not sure commented bits are necessary but I also have run them
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
-- below two lines failed with: Msg 2787, Level 16, State 1, Procedure sp_MSset_oledb_prop, Line 106 Invalid format specification: '%1!.'.
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1
-- but works all two as below:
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
-- Succeded to run after success with Excel so does not looks like necessary
*/
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\testing.xlsx;',
'SELECT Name, Class FROM [Sheet1$]')
SELECT [Name],[Class] FROM Qry_2
GO