Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
Добрый день! Помогите, плз, с проблемой: нужно читать данные из файла EXCEL под обычными пользователями. Реализовала через связанный сервер. Под сисадмином все работает, а вот под обычным пользователем ошибка Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "PRICE_EXCEL" вернул сообщение "Неопознанная ошибка". Сообщение 7303, уровень 16, состояние 1, процедура sp_tables_ex, строка 41 Не удалось проинициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "PRICE_EXCEL". Аутентификация виндовс, доступ к файлу у пользователей есть. |
22 окт 13, 09:13 [15012026] Ответить | Цитировать Сообщить модератору |
Ennor Tiegael Member Откуда: Сообщений: 3376 |
ElenaLeont, И как настроена секюрити под "обычным пользователем" в свойствах линка? |
22 окт 13, 09:40 [15012168] Ответить | Цитировать Сообщить модератору |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
в том то и вопрос, как ее настроить? в свойствах линка выбрано Без использования контекста безопасности, но так отображаются св-ва под сисадмином. Если запустить менеджмент студио под обычным пользователем и посмотреть св-ва линка, то отображается Не устанавливать:( |
22 окт 13, 09:47 [15012219] Ответить | Цитировать Сообщить модератору |
Ennor Tiegael Member Откуда: Сообщений: 3376 |
Поставьте, не знаю как это по-русски, "использовать контекст текущего пользователя". И скорее всего, SPN у сервера должен быть зарегистрирован (сообщение об ошибке напомнит, в случае чего). |
||
22 окт 13, 10:26 [15012448] Ответить | Цитировать Сообщить модератору |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
я уже пробовала так "использовать контекст текущего пользователя", результат тот -же, но так отображаются св-ва под сисадмином. Если запустить менеджмент студио под обычным пользователем и посмотреть св-ва линка, то отображается Не устанавливать:( |
22 окт 13, 10:34 [15012515] Ответить | Цитировать Сообщить модератору |
ElenaLeont Member Откуда: Екатеринбург Сообщений: 305 |
можно подробнее, что такое SPN у сервера должен быть зарегистрирован |
22 окт 13, 10:47 [15012603] Ответить | Цитировать Сообщить модератору |
Ennor Tiegael Member Откуда: Сообщений: 3376 |
ElenaLeont, У обычных пользователей может не быть прав на просмотр настроек линка. Поэтому студия может там отображать, в общем случае, что угодно. Если под сисадмином работает, значит, все драйверы в наличии, т.е. не хватает прав. Ищите, где не хватает. Можно гуглить текст ошибки, можно повесить профайлер на User Error Message... Подробнее про SPN - конечно, можно. |
22 окт 13, 11:11 [15012789] Ответить | Цитировать Сообщить модератору |
bamper78 Member Откуда: Сообщений: 120 |
-- Подключаем EXCEL ---------------------------------------- -- Вариант 1 через Прилинкованный сервер ---------------------------------------- -- 1 проверяем версию select @@Version -- 2 Проверяем зарегистированные драйверы, для x64 должен быть "Microsoft.ACE.OLEDB.12.0" EXEC sp_enum_oledb_providers -- 3 Разрешаем работу драйвера (если они зарегистированы) EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0 -- 4. включаем xp_cmdshell для работы с файлами begin EXEC sp_configure 'xp_cmdshell',1 reconfigure with override; end -- 4.1 'Ad Hoc Distributed Queries' включаем распределенные нерегламентированные запросы begin EXEC sp_configure 'Ad Hoc Distributed Queries',1 reconfigure with override; end -- 4.2 включаем 'show advanced options' begin EXEC sp_configure 'show advanced options',1 reconfigure with override end -- 4.3 'sp_addlinkedsrvlogin - FALSE' пароли для подключения к связанному серверу не используются begin EXEC exec sp_addlinkedsrvlogin N'LS_EXCEL', 'False' end -- 5. создаём прилинкованный сервер EXEC master.dbo.sp_addlinkedserver @server = N'LS_EXCEL', @srvproduct=N'ms ace 12', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'c:\data\MySheet3.xls', @provstr=N'Excel 12.0;' -- 6. В свойствах Linked Server в графе безопасность ставим "Устанавливать без контекста безопасности" -- 7. Проверяем через Management Studio->Server Objects->Linked Server->Test Connection есть ли связь с созданным сервером. -- 8. Проверяем доступность файла exec master..xp_cmdshell 'dir c:\data\MySheet3.xls' -- 9. Пробуем считать файлы SELECT * FROM [LS_EXCEL]...[Range] или SELECT * FROM [LS_EXCEL]...[Range$] ---------------------------------------- ---------------------------------------- -- Вариант 2 через OPENDATASOURCE ---------------------------------------- select* FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=c:\data\MySheet3.xls;Extended Properties=EXCEL 12.0')...[Range$]; или select* FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=c:\data\MySheet3.xls;Extended Properties=EXCEL 12.0')...[Range] ; ---------------------------------------- ----------------------------------------- -- Вариант 3 через OPENROWSET -------------------------------------------- SELECT * FROM OPENROWSET ( 'Microsoft.ACE.OLEDB.12.0', 'EXCEL 12.0; database=C:\MVK_Excel\regim.xls', 'SELECT * FROM [03_2013$]' ) --------------------- --Импорт Excel в DB SQL ---------------------------------------- SELECT * INTO regim FROM OPENROWSET ( 'Microsoft.ACE.OLEDB.12.0', 'EXCEL 12.0; database=C:\MVK_Excel\regim.xls', 'SELECT * FROM [03_2013$]' ) ------------------------------------------------ |
23 окт 13, 11:16 [15019074] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
avpetrov27 Member Откуда: Сообщений: 18 |
bamper78, Делаю всё по инструкции. после запроса на получение данных: SELECT * FROM SQL2_EXCEL...[St1$] появляется ошибка. Сообщение 7399, уровень 16, состояние 1, строка 1 Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "SQL2_EXCEL" сообщил об ошибке. Отказано в доступе. Сообщение 7301, уровень 16, состояние 2, строка 1 Не удалось получить требуемый интерфейс ("IID_IDBCreateCommand") от поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "SQL2_EXCEL". подскажите, пожалуйста, с чем может быть связан проблема? win 8.1 64 разрядная. SQL express 2012. |
22 ноя 15, 20:25 [18456676] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
|
||||
22 ноя 15, 20:30 [18456711] Ответить | Цитировать Сообщить модератору |
avpetrov27 Member Откуда: Сообщений: 18 |
Glory, Спасибо. Но с чем может быть связано отсутствие доступа? Права администратора вроде есть. И ещё такой вопрос: почему после выполнения этих инструкций, если попытаться открыть excel-файл, появляется сообщение о том, что редактирование файла запрещено пользователем 'другой пользователь'? Что это за пользователь, как его отцепить? |
24 ноя 15, 14:05 [18464613] Ответить | Цитировать Сообщить модератору |
avpetrov27 Member Откуда: Сообщений: 18 |
Glory, Шапка таблицы в excel-файле при этом выгружается. |
24 ноя 15, 14:08 [18464648] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Куда выгружается ?
С отсутствием доступа
Понятно, что у кого-то где-то есть какие права админитстратора. Вопрос в том, если нужные права у нужных учетных записей
Потому, что когда сервер открывает файл, то он становится пользователем файла
Надо подождать |
||||||||||
24 ноя 15, 14:13 [18464691] Ответить | Цитировать Сообщить модератору |
avpetrov27 Member Откуда: Сообщений: 18 |
Когда выполняю запрос SELECT * FROM [LS_EXCEL]...[sheet1$] выгружаются только названия колонок. потом ошибка.
А сколько ждать? |
||||||||
24 ноя 15, 14:22 [18464763] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Некоторое время
Это не шапка. Это метаданные о структуре набора |
||||||||
24 ноя 15, 14:25 [18464791] Ответить | Цитировать Сообщить модератору |
avpetrov27 Member Откуда: Сообщений: 18 |
Glory, ок. перезапустил Managment Studio с правами администратора. Теперь другая ошибка: Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "LS_EXCEL" вернул сообщение "Ядро СУБД Microsoft Access более не может открыть файл "" или записать в него данные. Файл уже открыт другим пользователем для монопольного доступа, либо требуется разрешение на просмотр и запись данных.". Сообщение 7303, уровень 16, состояние 1, строка 1 Не удалось проинициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "LS_EXCEL". т.е. теперь ждать пока "сервер отпустит"? может как-то принудительно "отобрать" можно? |
24 ноя 15, 14:39 [18464887] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
А кто тогда был тот, у кого "Права администратора вроде есть." ?
А пустое имя файла в оригинале или вы его убрали ?
Наверное надо использовать какие то утилиты мониторинга |
||||||
24 ноя 15, 14:43 [18464908] Ответить | Цитировать Сообщить модератору |
MrVoid Member Откуда: Сообщений: 333 |
avpetrov27, Поменяйте в свойствах сервиса аккаунт, из-под которого он запускается - поставьте Local Account. |
25 ноя 15, 15:08 [18471317] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |