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

Откуда:
Сообщений: 274
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2)


USE master;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', '1';
RECONFIGURE WITH OVERRIDE;

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\excel1.xls;','SELECT * FROM [Sheet1$]')


Выдаёт :

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Неопознанная ошибка".
Msg 7303, Level 16, State 1, Line 5
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".



Excel 2003. Аутентификация windows админ. Права на файл есть.
exec master..xp_cmdshell 'dir C:\excel1.xls' проверял.

Подскажите, в чём может быть проблема? В этом деле новичок.
8 ноя 11, 06:51    [11561302]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Где находится C:\excel1.xls ? На сервере? На клиенте?
Помните, что обращение к файлу идет со стороны инстанса сервера и от имени, под которым он запущен. Так что, возможно, вам надо обращаться по UNC-имени.
По крайней мере, у меня ваш запрос отрабатывает...
Да, а у вас локализованная версия Офиса? - тогда должно быть [Лист1$]
8 ноя 11, 09:00    [11561436]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Кстати, имеет смысл использовать ODBC, а не JET.
Что не требует заморачиваться с версией Офиса, а также провайдер возвращает более внятные сообщения об ошибках.
SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=[c:\temp\data.xls]', 'SELECT * FROM [Лист1$]')
8 ноя 11, 09:12    [11561454]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
Rudge
Member

Откуда:
Сообщений: 274
Файл excel.xls находится на сервере. На сервер захожу под учеткой админа, в sql стоит windows аутентификация.
Весь прикол в том, что этот запрос сначала работал, а теперь вдруг перестал. Пробовал и Лист1 и Sheet1.

По этому запросу :

SELECT * FROM OPENROWSET('MSDASQL', 'Driver={Microsoft Excel Driver (*.xls)};DBQ=[c:\excel1.xls]', 'SELECT * FROM [Лист1$]')

Выдаёт :

OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][Драйвер ODBC Excel]Общее предупреждение Не удается открыть раздел реестра 'Temporary (volatile) Jet DSN for process 0x69c Thread 0x454 DBC 0x6180bdac Excel'.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][Драйвер ODBC Excel] Недостаточно системных ресурсов.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".
8 ноя 11, 09:28    [11561497]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
Rudge
"[Microsoft][Драйвер ODBC Excel]Общее предупреждение Не удается открыть раздел реестра 'Temporary (volatile) Jet DSN for process 0x69c Thread 0x454 DBC 0x6180bdac Excel'."
Вот и разбирайтесь, что у вас изменилось с правами на сервере...
8 ноя 11, 09:32    [11561511]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
Rudge
Member

Откуда:
Сообщений: 274
Если делать не через OPENROWSET, через что лучше. Читал где-то, что на 64-битной системе ODBC не работает. Может есть более универсальный инструмент типа мастера? Просто выгрузку надо сделать разовую
8 ноя 11, 12:57    [11563075]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rudge
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][Драйвер ODBC Excel]Общее предупреждение Не удается открыть раздел реестра 'Temporary (volatile) Jet DSN for process 0x69c Thread 0x454 DBC 0x6180bdac Excel'.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][Драйвер ODBC Excel] Недостаточно системных ресурсов.".
Msg 7303, Level 16, State 1, Line 1

http://support.microsoft.com/kb/295297/ru
8 ноя 11, 14:11    [11563688]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
wickedru
Member

Откуда: СПб
Сообщений: 52
Екселевский файл в момент выполнения запроса не редактируется? Не открыт?
10 ноя 11, 12:42    [11574003]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
Rudge
Member

Откуда:
Сообщений: 274
Конечно, нет. С файлом должно быть всё ок.
Короче я запарился и решил делать через мастер импорта/экспорта.
10 ноя 11, 21:26    [11578198]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
wickedru
Member

Откуда: СПб
Сообщений: 52
Может кому-нибудь поможет:

EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE with override; 
GO

exec master..xp_cmdshell 'del  D:\logins.xls /Q' , no_output;
go

exec master..xp_cmdshell 'copy D:\logins_blank.xls D:\logins.xls /Y', no_output;
go

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

DECLARE @perem = 123
INSERT INTO  OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source=D:\logins.xls;Extended Properties=EXCEL 12.0')...[login$] 
SELECT [Login], [Password]
FROM [DB].[dbo].[Users]
where id= @perem
ORDER BY [Login]
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0
GO

EXEC sp_configure 'xp_cmdshell', 0
RECONFIGURE with override; 
GO

EXEC sp_configure 'show advanced options', 0
RECONFIGURE with override;
GO
12 ноя 14, 15:46    [16835188]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
VBA макрос, что ли, лень писать?
12 ноя 14, 17:16    [16836018]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
BKV88
Member

Откуда: Москва
Сообщений: 243
У меня аналогичная задача работает вот так

exec sp_configure 'show advanced options', 1
go
reconfigure
go
exec sp_configure 'xp_cmdshell', 1
go
reconfigure
go


exec xp_cmdshell 'del C:\Files\test.xls'
go
exec xp_cmdshell 'copy C:\Files\ForSend\test.xls C:\Files'
go
insert opendatasource('Microsoft.ACE.OLEDB.12.0', 'Data Source=C:\Files\test.xls;Extended Properties=Excel 8.0')...[Лист1$] 
select * from [StatDB]..stats
go

exec sp_configure 'xp_cmdshell', 0
go
reconfigure
go
exec sp_configure 'show advanced options', 0
go
reconfigure
go
12 ноя 14, 18:14    [16836304]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с импортом excel > ms sql через OPENROWSET  [new]
BKV88
Member

Откуда: Москва
Сообщений: 243
Пробовал вначале использовать драйвер Microsoft.Jet.OLEDB.4.0
Потом прочитал он только работает на x32 системах и отказался от него
12 ноя 14, 18:16    [16836309]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить