Jak powiedział Philip... najpierw sprawdź wykonanie xp_cmdshell. Jeśli nie działa z powodu problemów z uprawnieniami, najpierw skonfiguruj tę opcję ponownie, uruchamiając
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
po tym uruchom następujące polecenie, aby włączyć uprawnienia serwera połączonego dla funkcji InProcess dla sterownika 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
Teraz uruchom tę serię poleceń:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
jeśli wystąpi błąd, uruchom każde polecenie osobno. I na koniec uruchom import wszystkich danych programu Excel do serwera SQL, uruchamiając poniższe polecenie:
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
Pamiętaj, że w przypadku xls musisz użyć Jet Drivera zamiast ACE. A także TargetTableName nie może istnieć przed uruchomieniem tego zapytania. Szczęśliwego kodowania :)