sql >> Base de Datos >  >> RDS >> Sqlserver

Excel en SQL Server con Microsoft.ACE.OLEDB.12.0

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