Som Philip har sagt... kolla först körningen av xp_cmdshell. Om det inte körs på grund av behörighetsproblem, konfigurera först om det här alternativet genom att köra
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
efter detta kör följande kommando för att aktivera länkade serverbehörigheter för InProcess-funktioner för ACE-drivrutinen:
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
Kör nu denna serie av kommandon :
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
Om ett fel uppstår kör du varje kommando separat. Och slutligen kör importera all din Excel-data till SQL-servern genom att köra kommandot nedan :
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
Kom ihåg att i fallet med xls måste du använda Jet Driver istället för ACE. Och TargetTableName får inte existera innan den här frågan körs. Lycka till med kodningen :)