Агент SQL Server не может выполнить запрос OPENROWSET, но я могу — Microsoft.ACE.OLEDB.12.0 для связанного сервера (null) сообщил об ошибке

Я пытаюсь запустить запрос OPENROWSET к листу Excel следующим образом:

SELECT id, SourceName  
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0; HDR=YES; IMEX=1; Database=D:\MyFolder\Configuration.xlsx', 'SELECT * FROM [Sheet1$]')

Когда я выполняю это из SSMS, это работает. Как часть шага задания, он не работает с указанной ошибкой.

Что я пробовал:

  1. #P4#
  2. #P5#
  3. Установка разрешений для целевой электронной таблицы и папок на «Все» и «Чтение/запись»

  4. Когда я перехожу к «Объекты сервера» -> «Связанные серверы» -> «Поставщики», Microsoft.ACE.OLEDB.12.0 отображается в списке и находится в xp_enum_oledb_providers.

  5. Установлено ядро ​​базы данных Access x64.

Это SQL Server 2014.

Кто-нибудь может помочь? Почему агент SQL Server не может использовать поставщика ACE, когда мой пользователь может?


person user1186559    schedule 30.11.2016    source источник
comment
Проверьте разрешения для папки %TEMP%, используемой учетной записью, выполняющей процесс SQL Server. У учетной записи, на которой работает агент SQL, может не быть разрешения на запись туда. Дополнительные сведения см. в разделе Настройка № 2 в этом ответе.   -  person Gord Thompson    schedule 01.12.2016
comment
Спасибо Горд! После этого он все еще не работал, но участие в сервисном аккаунте заставило меня задуматься. Я дал права на чтение/запись пользователю C:\Users\SQLEngine (уже дал их пользователю SQLAgent), и это сработало. Без вашего предложения я бы и не подумал попробовать это, так что это очень ценно!   -  person user1186559    schedule 01.12.2016