Come ha detto Philip... prima controlla l'esecuzione di xp_cmdshell. Se non è in esecuzione a causa di problemi di autorizzazione, riconfigura prima questa opzione eseguendo
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
dopo questo, esegui il comando seguente per abilitare le autorizzazioni del server collegato per le funzionalità InProcess per il driver 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
Ora esegui questa serie di comandi:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
se si verifica un errore, eseguire ciascun comando separatamente. E infine esegui l'importazione di tutti i tuoi dati Excel sul server SQL eseguendo il comando di seguito indicato:
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
Ricorda che in caso di xls devi usare Jet Driver invece di ACE. E anche TargetTableName non deve esistere prima di eseguire questa query. Buona codifica :)