Como dijo Philip... primero verifique la ejecución de xp_cmdshell. Si no se está ejecutando debido a un problema de permiso, primero vuelva a configurar esta opción ejecutando
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
después de esto, ejecute el siguiente comando para habilitar los permisos del servidor vinculado para las capacidades de InProcess para el controlador 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
Ahora ejecuta esta serie de comandos:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
si se encuentra un error, ejecute cada comando por separado. Y finalmente ejecute importar todos sus datos de Excel al servidor SQL ejecutando el comando mencionado a continuación:
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
Recuerda que en caso de xls tienes que usar Jet Driver en lugar de ACE. Y también TargetTableName no debe existir antes de ejecutar esta consulta. Feliz codificación :)