Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Linked Server работает из под dbo но не работает у пользователей  [new]
sdh
Member

Откуда:
Сообщений: 33
select @@VERSION
Microsoft SQL Server 2005 - 9.00.5057.00 (X64) Mar 25 2011 13:33:31 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Evaluation Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)


создал Linked Server, скрипт:
EXEC master.dbo.sp_addlinkedserver @server = N'xlsFile', @srvproduct=N'MS ACE OLEDB 12.0', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'D:\Test.xls', @provstr=N'Excel 12.0;'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'xlsFile',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'xlsFile', @optname=N'use remote collation', @optvalue=N'true'


делаю запрос под админом (dbo)
SELECT * FROM [xlsFile]...[Лист1$]

все работает, все отлично

пытаюсь то же самое выполнить под обычным пользователем - не выходит
cannot initialize the data source object of ole db provider "microsoft.ace.oledb.12.0" for linked server "xlsFile"


понимаю, что скорее всего где то накосячил с правами, где то что то не недовключил, но никак не могу понять где.

авторизация в сети доменная, на sql - windows authentication
13 фев 17, 16:37    [20208418]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
sdh,

Ну для начала, у этого обычного пользователя доступ к файлу есть?
13 фев 17, 16:57    [20208491]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
Santa89
Member

Откуда:
Сообщений: 1520
У пользователей доступа к файлу нет
13 фев 17, 18:25    [20208807]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
sdh
Member

Откуда:
Сообщений: 33
ну доступ вроде как дожен быть.
пользователь перед селектом через некое приложение непосредственно сам копирует файл на нужное место "D:\Test.xls"
Если бы доступа не было - и файл бы не скопировался. а он копируется.
непосредственно на папку (она расшарена по сети) на шару стоит "Все" -"Полный доступ", Безопасность - "Все" - "Полный доступ", +"Пользователи домена" - "Полный доступ"
14 фев 17, 00:09    [20209492]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
sdh
Member

Откуда:
Сообщений: 33
решил проблему !!!
помогла статья
https://www.excel-sql-server.com/excel-import-to-sql-server-using-distributed-queries.htm
конкретно, пункт:

Grant rights to TEMP directory

дал полные права "Всем" на TEMP пользователя, из под которого запущен sql и все заработало!
жесть какая то, пляски с бубном ))
14 фев 17, 06:04    [20209609]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
sdh
Member

Откуда:
Сообщений: 33
казалось бы, причем тут temp ?...
14 фев 17, 06:05    [20209610]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
o-o
Guest
sdh
казалось бы, причем тут temp ?...

По вашей же ссылке идем и читаем:
The main problem is that an OLE DB provider creates a temporary file during the query in the SQL Server temp directory using credentials of a user who run the query.
14 фев 17, 09:09    [20209758]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
sdh
дал полные права "Всем" на TEMP пользователя, из под которого запущен sql и все заработало!
жесть какая то, пляски с бубном ))

Типовую процедуру назначения прав службе вы называете жестью???
14 фев 17, 09:25    [20209780]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
o-o
Guest
SQL2008
sdh
дал полные права "Всем" на TEMP пользователя, из под которого запущен sql и все заработало!
жесть какая то, пляски с бубном ))

Типовую процедуру назначения прав службе вы называете жестью???

он как раз про то, что права на темп пришлось выдать не службе сервера,
а рядовым юзерам.
ибо
In addition to granting full control to the SQL Server service account,
any user that connects to the computer that is running SQL Server by using Windows Authentication
must also be granted full control to the same TEMP and TMP directories that the SQL Server service account uses.

Before you instantiate the OLEDB provider, SQL Server impersonates the account that is connecting to the computer
that is running SQL Server if it is using a trusted connection.
14 фев 17, 11:24    [20210099]     Ответить | Цитировать Сообщить модератору
 Re: Linked Server работает из под dbo но не работает у пользователей  [new]
sdh
Member

Откуда:
Сообщений: 33
меня смутила в т.ч. фраза про 32 бита

Grant rights to TEMP directory
This step is required only for 32-bit SQL Server with any OLE DB provider.

сервак х64, Провайдер MS ACE OLEDB 12.0 так же х64

х32 нигде не пахнет. однако, доступ к TEMP-у админа(под ним работают все службы скуля) пришлось таки давать юзерам. Поэтому и называю пляской с бубном >> и вроде не надо, а на всякий случай давай дадим, вдруг поможет. помогло :)
15 фев 17, 10:07    [20212887]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить