Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Excel no SQL Server com Microsoft.ACE.OLEDB.12.0


Como Philip disse... primeiro verifique a execução de xp_cmdshell. Se não estiver em execução devido a um problema de permissão, primeiro reconfigure esta opção executando
SP_CONFIGURE 'XP_CMDSHELL',1
GO             
RECONFIGURE

depois disso, execute o seguinte comando para habilitar as permissões do servidor vinculado para os recursos do InProcess para o 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

Agora execute esta série de comandos:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE

se o erro for encontrado, execute cada comando separadamente. E, finalmente, execute importar todos os seus dados do Excel para o SQL Server executando o comando abaixo mencionado:
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                         'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
                         'SELECT * FROM [sheetName$]')

Lembre-se que no caso de xls você tem que usar o Jet Driver ao invés do ACE. E também o TargetTableName não deve existir antes de executar esta consulta. Boa codificação :)