Не удается инициализировать объект источника данных поставщика OLE DB MSDASQL для связанного сервера (пусто)

Возникла интересная проблема. Я читаю из файла excel на сервере через OpenRowset в Sql2005. Я запускал запрос несколько раз без каких-либо проблем. Я только что вышел на быстрое совещание и вдруг получаю сообщение об ошибке «Не удается инициализировать объект источника данных поставщика OLE DB «MSDASQL» для связанного сервера «(null)»»

Я убедился, что файлы не используются на сервере, и даже удалил их и повторно скопировал на сервер, но все равно получаю ту же ошибку.

ОБНОВЛЕНИЕ: кажется, что это происходит только в том случае, если я присоединяюсь к двум выборам из разных наборов openrowsets. Если я запускаю запросы по отдельности, они все равно работают нормально. Я сделал соединение раньше без каких-либо проблем. Идеи?


person StevenMcD    schedule 01.09.2009    source источник


Ответы (5)


Проблема возникает из-за того, что временная папка пользователя, под которой работает служба SQL-сервера, недоступна с учетными данными, с которыми выполняется запрос. Попробуйте установить безопасность этой временной папки с минимальными ограничениями. DSN, который создается каждый раз, когда вы запускаете запрос openrowset, может быть воссоздан без конфликта учетных данных. Это сработало для меня без каких-либо требований к перезагрузке.

person Rajesh    schedule 16.07.2010
comment
Где мне найти эту временную папку? - person Slider345; 07.01.2013
comment
Для нашей конкретной конфигурации — Windows Server 2008 R2, SQL Server 2008 R2 — конкретная папка TEMP, которую нам нужно было предоставить пользователям домена, была: C:\Users\<SQL Server Service Account Name>\AppData\Local\Temp - person fresh; 16.10.2013
comment
Я потратил на это весь день - я не могу поверить, что это решение!!! Но это сработало, так что я счастлив. - person Warren; 05.03.2014
comment
Без нового общего разрешения вы сможете запускать скрипт только локально, открыв SSMS на SQL Server. Другой способ — добавить свою собственную учетную запись домена в локальную группу администраторов (SQL Server), которая выполняет тот же трюк. - person Chjquest; 18.02.2016
comment
Большое спасибо, этот ответ сэкономил нам столько времени! - person MartynJones87; 17.03.2016
comment
Я только что обнаружил, что наша служба SQL Server работает как сетевая служба, и у этой учетной записи нет папки в C:\Users. У него есть временная папка, и вы можете найти ее с помощью этих инструкций< /а>. Однако изменение разрешений для этой папки для администраторов домена и пользователей домена не устранило ошибку для меня. - person rg89; 27.04.2016
comment
Это было очень полезно. Я пробовал все, и, наконец, это сработало для меня. Я не знаю, вам нужен доступ к временной папке SQL-сервера, когда мы используем вход в SQL. - person Shoeb Siddique; 03.05.2017
comment
Я знаю, что это избыточно и не рекомендуется, но спасибо! У меня была эта проблема, и я бы никогда не догадался, что это проблемы с доступом к временной таблице. Я только что предоставил полный доступ к AppData, и он сразу же снова заработал. Это был связанный сервер с Postgres, использующий ODBC. - person Hikari; 07.08.2017

В итоге мы перезапустили сервер базы данных, и это, похоже, решило проблему. Возможно, файлы как-то заблокировались. Мы никогда не узнаем наверняка, хотя

person StevenMcD    schedule 23.09.2009
comment
У меня тоже сработал перезапуск сервера. Завершено создание/удаление связанного сервера сценария в хранимой процедуре, которая выполняет ввод. - person ajeh; 10.04.2015
comment
Перезапуск сервера работает для меня как прелесть. спасибо, я не могу поверить, что трачу сколько времени, чтобы решить эту проблему. Спасибо - person Pouya Samie; 14.12.2015

Мне пришлось загрузить и установить «Распространяемый компонент Microsoft Access Database Engine 2010», доступный здесь.

«Причина этой проблемы заключается в том, что на вашем 64-разрядном сервере Windows Server 2003 не установлен 64-разрядный текстовый драйвер ODBC. (который использует OLEDB внутри) для доступа к источникам данных через драйверы ODBC». Источник

person dialex    schedule 26.05.2014

Эта проблема случилась и со мной. Сочетание включения параметра поставщика «Разрешить в процессе» для поставщика OraOLEDB.Oracle (SSMS > Объекты сервера > Связанные серверы > Предоставления > OraOLEDB.Oracle), перезапуска службы Windows SQL Server и, наконец, настройки разрешений для файла TNSNAMES.ora. напрямую.

person KirstieBallance    schedule 19.08.2016

Я думаю, вы создали ODBC с помощью 32-битного драйвера, но для SQL Server Management Studio требуется 64-битная версия. Потому что это произошло, когда вы хотите создать связанный сервер для MYSQL на SQL Server. Таким образом, вы должны использовать систему DSN для 64-битных драйверов.

person AgungPanduan.Com    schedule 22.06.2020