Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

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

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