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

Откуда:
Сообщений: 2631
select *
  from OpenRowset
(
'MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};
FIL=dBase 4.0;
DriverId=533;
Deleted=0;
DefaultDir=D:......
;CollatingSequence=ASCII','select 1  From Z ')  a
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver] Cannot locate the requested Xbase memo file.".
Msg 7350, Level 16, State 2, Line 2
Cannot get the column information from OLE DB provider "MSDASQL" for linked server "(null)".

Таблица Z содержит "memo" поля, но я их не выгружаю.
Поражает, что если этот dbf файл открыть Excel-ем, то мой OpenRowset замечательно работает.
ПОсле закрытия экселя и повторной попытки считывания опенроусетом - возвращает
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver] Cannot locate the requested Xbase memo file.".
Msg 7320, Level 16, State 2, Line 1
Cannot execute the query "select 1 From Z " against OLE DB provider "MSDASQL" for linked server "(null)".


Может кто подскажет, как побороть проблему.
З.Ы.
SELECT * FROM OPENROWSET
('MICROSOFT.JET.OLEDB.4.0',
'dBase IV;
DATABASE=D:....','select 1 from Z.DBF') -то же не работает.
Есть еще фокспрошный драйвер(VFPOLEDB),но он то же отказывается работать.
25 июн 09, 16:19    [7343945]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
проходящий.
Guest
--__Александр__--,
отсутствие memo-файла не может восполнить ни один драйвер. То, что Excel игнорирует отстутвие такого файла - его личные особенности.
25 июн 09, 16:26    [7343996]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Предыдущию проблему решил, подсунув "чужой" пустой memo-файл с нужной структурой.
Спасибо проходящиму.


Может кто сталкивался:
При выкачивании из dbf файла большого количества строк(2-3 млн),
выкачивается меньшее количество строк, чем показывает count(*)???
При чем Джетовский провайдер на это грешен в большей степени, чем фокспрошный.
Но фокспрошный работает в разы медленнее.
Может кто знает, как еще фокспрошный провайдер ускорить?

З.Ы. Выкачиваю в SSIS-е через OPENROWSET.
Если в качестве OLEDB Source указывать сами dbf-файлы, то выкачивает вообще по строчке в час.
3 июл 09, 10:14    [7371851]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
проходящий.
Guest
--__Александр__--
Но фокспрошный работает в разы медленнее.
Может кто знает, как еще фокспрошный провайдер ускорить?
Как обычно в базах данных, создав подходящие индексы.
3 июл 09, 10:31    [7371929]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
проходящий.
Эээ, а как помогут индексы при запросе Select * ???
3 июл 09, 10:34    [7371943]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
проходящий.
Guest
--__Александр__--
проходящий.
Эээ, а как помогут индексы при запросе Select * ???
При наличии большого количества помеченных на удаление записей очень даже могут помочь. Да еще несколько параметров могут затормозить процесс. Но пока мы больше про известного коня в известной среде распинаемся.
3 июл 09, 10:37    [7371966]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OpenRowSet  [new]
ПикеЯ
Member

Откуда: из обилия
Сообщений: 20570
в фоксе
list all off to file <файл>
и bcp.exe этот файл. ?
6 июл 09, 09:17    [7378972]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить