MSSQL Ошибка 7302: Cannot create instance of OLE DB provider — Linked Server
- Сообщение:
Msg 7302, Level 16, State 1: Cannot create an instance of OLE DB provider 'MSOLEDBSQL' (или 'Microsoft.ACE.OLEDB.12.0', 'OraOLEDB.Oracle') for linked server 'LINKED_1C'. - Сбой выполнения распределенных запросов
OPENQUERYили прямых обращений через четырехимятную нотацию. - Невозможность выполнить обмен данными между 1С:Предприятием и внешними СУБД через механизм Linked Server.
1. Включение параметра AllowInProcess для OLE DB провайдера
По умолчанию вызов внешних провайдеров в процессе SQL Server заблокирован из соображений безопасности. Включите опцию AllowInProcess:
USE [master];
GO
EXEC sp_MSset_oledb_prop N'MSOLEDBSQL', N'AllowInProcess', 1;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.16.0', N'AllowInProcess', 1;
GO2. Проверка разрядности драйверов (32-bit vs 64-bit)
Если служба SQL Server 64-битная, все используемые OLE DB провайдеры (Access Database Engine, Oracle Client, PostgreSQL OLE DB) обязательно должны быть установлены в 64-разрядной версии. 32-битные драйверы не могут быть загружены в 64-битный адресный процесс sqlservr.exe.
3. Настройка прав на папку Temp для учетной записи SQL Server
Для OLE DB провайдеров Microsoft.ACE (Excel/Access) создайте системные каталоги и выдайте права службе SQL Server:
C:\Windows\System32\config\systemprofile\AppData\Local\TempC:\Windows\SysWOW64\config\systemprofile\AppData\Local\Temp
icacls "C:\Windows\System32\config\systemprofile\AppData\Local\Temp" /grant "NT SERVICE\MSSQLSERVER":(OI)(CI)F /T4. Тестирование подключения к Linked Server
EXEC sp_testlinkedserver N'LINKED_1C';
GO Частые вопросы (FAQ)
Почему Microsoft не рекомендует использовать AllowInProcess для сторонних драйверов?
В режиме AllowInProcess OLE DB драйвер исполняется в общем адресном пространстве СУБД. Любая критическая ошибка (Access Violation) внутри стороннего драйвера приведет к аварийному падению всего экземпляра SQL Server.
Что делать, если sp_testlinkedserver возвращает ошибку аутентификации?
Проверьте маппинг пользователей в свойствах Linked Server -> Security. Укажите явный логин и пароль удаленной базы данных (Be made using this security context).
Можно ли через Linked Server читать файлы Excel прямо из 1С?
Да, через провайдер Microsoft.ACE.OLEDB и OPENROWSET, но для стабильной работы под нагрузкой рекомендуется использовать прямое чтение через COM/Native библиотеки 1С.
Нужно ли перезапускать SQL Server после установки нового OLE DB драйвера?
Да, для корректной регистрации COM-объектов и динамических библиотек DLL в пространстве ядра СУБД рекомендуется выполнить перезапуск службы SQL Server.