Comme Philip l'a dit... vérifiez d'abord l'exécution de xp_cmdshell. S'il ne fonctionne pas en raison d'un problème d'autorisation, reconfigurez d'abord cette option en exécutant
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
après cela, exécutez la commande suivante pour activer les autorisations de serveur lié pour les fonctionnalités InProcess pour le pilote ACE :
USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
Exécutez maintenant cette série de commandes :
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
si une erreur se produit, exécutez chaque commande séparément. Et enfin, lancez l'importation de toutes vos données Excel sur le serveur SQL en exécutant la commande mentionnée ci-dessous :
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
N'oubliez pas qu'en cas de xls, vous devez utiliser Jet Driver au lieu d'ACE. De plus, le TargetTableName ne doit pas exister avant l'exécution de cette requête. Bon codage :)