Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Excel dans SQL Server avec Microsoft.ACE.OLEDB.12.0

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 :)