Проблема:

При выполнении запроса из связанного сервера через openrowset:

останавливается служба сервера и в панели результата запроса выходит сообщение об ошибке:

Сообщение 109, уровень 20, состояние 0, строка 0
Ошибка на транспортном уровне при получении результатов с сервера. (provider: Shared Memory Provider, error: 0 – Канал был закрыт.)

На сервере установлен MSSQL 2012 SP4.

Решение:

Чтобы сервер не крашился нужно установить хотфикс:

Статья: https://support.microsoft.com/en-us/help/2859413/sql-server-service-crashes-when-you-run-a-linked-server-query-on-a-win

Прямая ссылка на хотфикс: https://support.microsoft.com/ru-ru/hotfix/kbhotfix?kbnum=2859413&kbln=en-US

 

После этого запрос стал выдавать следующую ошибку:

Не удалось получить требуемый интерфейс (“IID_IDBCreateCommand”) от поставщика OLE DB “Microsoft.ACE.OLEDB.12.0” для связанного сервера

 

Данную проблему удалось решить следующим образом:

В свойствах провайдера нужно включит галочку: Allow inprocess (Допускать в ходе процесса)

Далее ПУСК – выполнить: Dcomcnfg

Службы компонентов – Мой компьютер – Настройка DCOM – MSDAINITIALIZE, щелкаем правой кнопкой, переходим на вкладку безопасность и во всех трёх группах переводим пульку на “Настроить”, в каждой группе щелкаем кнопку “Изменить” и если у вас служба сервера стартует под учетной записью MSSQLSERVER, добавляем в каждой группе полные права для этой учетной записи. После этого запрос стал выполняться правильно.