Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

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

Wie Philip gesagt hat ... überprüfen Sie zuerst die Ausführung von xp_cmdshell. Wenn es aufgrund eines Berechtigungsproblems nicht ausgeführt wird, konfigurieren Sie diese Option zuerst neu, indem Sie

ausführen
SP_CONFIGURE 'XP_CMDSHELL',1
GO             
RECONFIGURE

Führen Sie danach den folgenden Befehl aus, um Verbindungsserverberechtigungen für InProcess-Funktionen für den ACE-Treiber zu aktivieren:

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

Führen Sie nun diese Befehlsfolge aus:

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE

Wenn ein Fehler auftritt, führen Sie jeden Befehl separat aus. Führen Sie schließlich den Import aller Ihrer Excel-Daten in den SQL-Server aus, indem Sie den unten genannten Befehl ausführen:

SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                         'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
                         'SELECT * FROM [sheetName$]')

Denken Sie daran, dass Sie im Fall von xls Jet Driver anstelle von ACE verwenden müssen. Außerdem darf der TargetTableName nicht vorhanden sein, bevor diese Abfrage ausgeführt wird. Viel Spaß beim Codieren :)