Задача: получить набор данных из Excel-файла в виде результата запроса SQL.

Все необходимые опции, заранее, были включены следующим скриптом:

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
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

Далее, я пытаюсь сделать импорт данных из Excel-файла SQL-запросом:

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                'Excel 12.0;Database=c:\xlsfile\file.xlsx',
                'SELECT * FROM [Sheet1$]')

но выходит ошибка:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

 

Решение: Добавить полные права на папку:

c:\Users\MSSQLSERVER\AppData\Local\Temp\

для пользователя под которым осуществлен вход в Windows.