2

У меня возникла ситуация, когда связанный сервер с БД доступа разбивает мой SQL-сервер.OPENDATASOURCE вместо Linked Server

Crashed здесь означает, что добавление связанного сервера приводит к тому, что все другие связанные серверы используют этот провайдер для прекращения работы. Любые запросы к связанным серверам зависают и не завершаются. Эта ситуация сохраняется до перезапуска сервера.

Однако, когда я использую OPENDATASOURCE для подключения к одному и тому же источнику данных, у меня нет этой проблемы.

Зачем нужна работа и другая авария?

Поставщик, которым я пользуюсь, является Microsoft.ACE.OLEDB.12.0. У меня есть параметр Dynamic и разрешено включить inprocess. Пример запроса ниже

select 
* 
from OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 
    'Data Source=\\networkPath\Reporting.accdb')...MyAccessTable 
+1

Когда вы говорите «разбился», что именно вы имеете в виду? –

+0

Добавление связанного сервера приводит к прекращению работы всех других связанных серверов, использующих этот провайдер. Любые запросы к связанным серверам зависают и не завершаются. Эта ситуация сохраняется до перезапуска сервера. – FistOfFury

ответ

-1

SQL Server происходит сбой, вероятно, потому, что стек вызовов sqlserv.exe был заполнен объектом OLEDB или из-за конфигурации библиотеки доступа к данным не является правильным.

Попробуйте это:

  1. Убедитесь, что Разрешить внутрипроцессным опция активирована на поставщика
  2. Start sqlserv.exe с большим стека вызовов с помощью -g 512 параметров запуска

Activate Allow inprocess

+0

Максимальная память сервера составляла 10240 МБ, минимальная память для каждого запроса в КБ равнялась 1024. Как было указано выше, разрешить inprocess было включено. – FistOfFury

+0

Вы пробовали -g 512 как параметр запуска? Максимальная память сервера не влияет на размер стека вызовов. Все объекты OLE распределяются в стеке вызовов, а не в пуле буферов. – PollusB

Смежные вопросы