Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0"  [new]
User2155
Member

Откуда:
Сообщений: 150
Добрый день,

не работает подключение к LinkedServer у пользователя. Выдает ошибку:
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "margin_excel_srv". (Microsoft SQL Server, Error: 7303)

Сервер подключается к эксель файлу в папке. Вот скрипт создания:
USE [master]
GO

/****** Object:  LinkedServer [margin_excel_srv]    Script Date: 23.04.2018 15:23:25 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'margin_excel_srv', @srvproduct=N'Excel', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'D:\Margin_excel_files\ILKMP.xlsx', @provstr=N'Excel 12.0;IMEX=1;HDR=YES;'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'margin_excel_srv',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

У меня все работает нормально.
Права на чтение из папки у пользователя есть. Ради прикола даже сделал его сисадмином на сервере - все равно такая же ошибка.

Есть идеи как это лечится?
23 апр 18, 15:29    [21361430]     Ответить | Цитировать Сообщить модератору
 Re: Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0"  [new]
User2155
Member

Откуда:
Сообщений: 150
Есть подозрение это как-то связано с версиями экселя.
У пользователя стоит 32х битная, у меня 64 битная. Может из-за этого оно и глючит. По крайней мере это единственное что я смог нарыть...
23 апр 18, 17:55    [21362143]     Ответить | Цитировать Сообщить модератору
 Re: Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0"  [new]
User2155
Member

Откуда:
Сообщений: 150
Для потомков. Лечится вот таким способом.

1) Сделать SQL логин, от имени которого идет подключение к серверу.
К сожалению, он должен быть сисадмином. Наверное, есть способ дать ему меньше прав, но я не нашел.

2) Завести этот логин в самом LinkedServer.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'margin_excel_srv',@useself=N'False',@locallogin=N'MySqlSysadminLogin',@rmtuser=NULL,@rmtpassword=NULL

У меня подключается приложение, поэтому пользователи логин и пароль сисадмина знать не будут.
Работает вроде...
25 апр 18, 09:26    [21366702]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить