Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Я же поднимал эту тему, но толи я не смог обрисовать проблему, то ли еще что, но ответа так и не получил. Поэту поднимаю тему снова, но последний раз.

SQL Server 2000, программа работает через ADO и выполняет запросы на экспорт данных в DBF (dBASE IV - файл уже создан) типа:
INSERT INTO 
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\;Extended Properties=DBASE IV')...R0
(FAM,IM)
SELECT FAM,IM
FROM R0

Проблемы (Win XP Sp2):
1) Если на компьютере не установлено BDE, то ошибка "Неопознанная ошибка во время многошаговой операции ". Возникает всегда при попытке выгрузить данные в DBF. При выборке из DBF ошибки нет.
2) Если BDE установлено на некоторых компьютерах вылетает ошибка "Непредвиденная ошибка драйвера", если Непредвиденная ошибка драйвера внешней базы данных (15877).
Если ставим параметр HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase "BDE"=dword:00000002., то вылетает ошибка №1

В FAQ есть пример линкедсервер с дайвером фокпро, но мне нужен dbase IV, а если сделать линкедсервер с Jet разве не будет тоже самое что запросом?
Обязательно ли нужно BDE для работы с DBF через Jet?
Пробовал ставить MDAC 2.8 и Jet 4 Sp8 - являются частью системы - обновлдение не нужно..
Как заставить работать Jet?
4 фев 08, 13:13    [5240531]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Неопознанная ошибка во время многошаговой операции возникает только при пером выполнении Insert! При остальных выгрузка проходит нормально..
Может кто подскажет что с моим дбф не так?

К сообщению приложен файл (R0_R.zip - 333bytes) cкачать
4 фев 08, 19:03    [5242795]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Schwan

Обязательно ли нужно BDE для работы с DBF через Jet?

Судя по справке в Access, можно и без BDE. Фрагмент из справки:
"Инициализация драйвера базы данных dBASE...DataCodePage Этот параметр используется, только если на компьютере не установлено ядро BDE".

Мне понадобилось перегонять данные из DBF Clipper 5.0 в MSSQL2000, остановился на варианте с прилинкованным сервером. Перегонял десятки раз, проблем пока не было. Попробовал несколько раз вставить из MSSQL2000 в DBF 60000 записей, прошло без ошибок. ОС W2003SP2, BDE установлен. Кодовая страница настроена в BDE. Скрипт запускаю в QA.

Вот код...
--Проверяем подключен ли сервер, если да, то отключаем.
if exists (select srvname from master.dbo.sysservers where srvname='DBFData')
exec sp_dropserver @server='DBFData', @droplogins='droplogins'
go

--Подключаем сервер.
EXEC sp_addlinkedserver
@server = N'DBFData',
@srvproduct=N'MicrosoftJet.OLEDB.4.0',
@provider=N'Microsoft.Jet.OLEDB.4.0',
@datasrc=N'D:\',
@provstr=N'dBase 5.0'
EXEC sp_addlinkedsrvlogin 'DBFData', 'false', 'sa', 'admin', ''
...
--Перегоняем данные.
INSERT INTO DBFData...Table1 (K, S)
SELECT K, S FROM Table2
GO
...
--Отключаем сервер.
EXEC sp_droplinkedsrvlogin 'DBFData', 'sa'
EXEC sp_dropserver 'DBFData'
5 фев 08, 00:50    [5243370]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
у нас около 200 клиентских установок программы и достаточно часто возникаю проблемы с экспортом в DBF через Jet, несмотря на одинаковые операционные системы WinXP SP2.

Очень странно, что ошибка "Неопознанная ошибка во время многошаговой операции" возникает только при первом INSERT. Я подозреваю, что что-то не так с дбф в который мы экспортируем - он создается отдельно перед экспортом.
5 фев 08, 07:54    [5243514]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Ошибка полностью:
[OLE/DB provider returned message: Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
Server: Msg 7343, Level 16, State 2, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' could not INSERT INTO table '[Microsoft.Jet.OLEDB.4.0]'. 
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IRowsetChange::InsertRow returned 0x80040e21:  The provider return DB_E_ERRORSOCCURRED, but none of the columns is in error status. Data status sent to the provider: [COLUMN_NAME=C_KAT1 STATUS=DBSTATUS_S_OK], [COLUMN_NAME=SS STATUS=DBSTATUS_S_DEFAULT], [COLUMN_NAME=SN_POL STATUS=DBSTATUS_S_DEFAULT], [COLUMN_NAME=FAM STATUS=DBSTATUS_...
5 фев 08, 08:14    [5243542]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Schwan

...columns is in error status. Data status sent to the provider: [COLUMN_NAME=C_KAT1 STATUS=DBSTATUS_S_OK], [COLUMN_NAME=SS STATUS=DBSTATUS_S_DEFAULT],...

К сожалению не видно статусы всех полей, но есть подозрение, что с каким то полем всё же есть ошибка.
Если так, то можно предположить, что данные для вставки, не все корректны.
5 фев 08, 11:36    [5244788]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Alex_Toms
Schwan

...columns is in error status. Data status sent to the provider: [COLUMN_NAME=C_KAT1 STATUS=DBSTATUS_S_OK], [COLUMN_NAME=SS STATUS=DBSTATUS_S_DEFAULT],...

К сожалению не видно статусы всех полей, но есть подозрение, что с каким то полем всё же есть ошибка.
Если так, то можно предположить, что данные для вставки, не все корректны.


Эта ошибка от этого запроса:
INSERT INTO 
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\;Extended Properties=DBASE IV')...R0_R
(C_KAT1,FAM)
SELECT C_KAT1,FAM
FROM R0_R

В таблице R0_R в базе всего одна запись, запускаю запрос из QA - первый раз ошибка - второй данный вставляются и все последующие запросы выполняются к этой дбф нормально..
5 фев 08, 13:39    [5246059]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Еще на что то надеюсь:

в DBF одно поле C_KATL2

Выполняем запрос:
INSERT INTO 
OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\;Extended Properties=DBASE IV')...R0_R
(C_KAT2)
SELECT C_KAT2
FROM R0_R

После первого запроса ошибка:

Server: Msg 7343, Level 16, State 2, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' could not INSERT INTO table '[Microsoft.Jet.OLEDB.4.0]'. 
[OLE/DB provider returned message: Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.]
[OLE/DB provider returned message: Текущая запись отсутствует.]
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IRowsetChange::InsertRow returned 0x80040e21:  The provider return DB_E_ERRORSOCCURRED, but none of the columns is in error status. Data status sent to the provider: [COLUMN_NAME=C_KAT2 STATUS=DBSTATUS_S_OK]. Data status returned from the provider: [COLUMN_NAME=C_KAT2 STATUS=DBSTATUS_S_OK]].

ДОБАВИЛАСЬ 1 ЗАПИСЬ В DBF!

Выполняем запрос следующий раз и дальше: ВСТАВЛЯЮТСЯ УЖЕ ВСЕ ЗАПИСИ!
7 фев 08, 17:13    [5259194]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Ошибка возникает если DBF файл пустой, если есть хоть одна запись экспорт проходит нормально.
Куда дальше копать?
7 фев 08, 17:36    [5259379]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
через линкед сервер тоже самое:

sp_addlinkedserver 
        @server = 'DBF',
	@srvproduct = 'DBF_OLE',
	@provider = 'Microsoft.Jet.OLEDB.4.0',
	@datasrc = 'C:\',
	@provstr = 'dBase IV'

SELECT * FROM [DBF]...R0_R

INSERT INTO [DBF]...R0_R (C_KAT2)
SELECT C_KAT2
FROM R0_R

та-же ошибка во время многошаговой операции..
7 фев 08, 17:50    [5259493]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
valex13
Member

Откуда: Иркутск
Сообщений: 349
А что мешает сделать DTS Package. Потом еще защедулить и на клиента Jоb запускать? Хотя через Linked Server тоже должно работать...
8 фев 08, 07:45    [5260829]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
DTS можно и в процедуру затарамбовать.
И выпонять в любой удобный момент
Тынц
8 фев 08, 08:01    [5260854]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
PaulWist
Member

Откуда:
Сообщений: 2267
Какой тип и размерность полей в источнике и в dbf?
8 фев 08, 08:57    [5260953]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
PaulWist
Какой тип и размерность полей в источнике и в dbf?


Источник: C_KAT2 int 4 Allow Nulls

ДБФ: C_KAT2;N;20;0
8 фев 08, 17:07    [5265389]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
angel_zar
DTS можно и в процедуру затарамбовать.
И выпонять в любой удобный момент
Тынц


ссылка не арбайтен..
8 фев 08, 17:11    [5265432]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
valex13
А что мешает сделать DTS Package. Потом еще защедулить и на клиента Jоb запускать? Хотя через Linked Server тоже должно работать...


Всю программу переделывать + очень много таблиц (более 100) импортируются/экспортируются в ДБФ..

Проблема либо с Jet4, либо с нашим дбф (выкладывал выше)..

1) Windows XP SP2 отказывается обновлять Jet Sp8 - типа не требуется..
2) По микрософт полазил - нашел [url=http://]http://support.microsoft.com/kb/269495[/url] - пробовал добавлять параметр в реестр и ставить Persist Security Info в подключение к dbf через дет - не помогло..
3) Странно что только у меня эта ошибка или никто не обращается с дбф таким способом.
4) До этого программа работала с БД Access работала с дбф через джет никаких проблем не было
8 фев 08, 17:20    [5265507]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
ЗАМЕТИЛ ЧТО НА ОДНОМ КОМПЬЮТЕРЕ ОШИБКИ НЕТ!
Windows XP Pro 2002 SP2 + на этом компьютере стояло автоматическое обновление Windows!
но какое обновление искать?
8 фев 08, 19:37    [5266245]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Нет автоматическое обновление не помогло.

Заметил что C:\WINDOWS\system32\msxbde40.dll на компьютере гда нет ошибки 2006 года, на остальных 2004. Заменил в без.режме с копированием в кэшдлл - не помогло..

Заметил, что в programm files\common files\system в папке ado и других тоже много длл 2004 года, хотя на пк где нет ошибки они 2006 - заменил тоже не помогло..
11 фев 08, 09:01    [5269855]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Вот еще моя проблемка:
https://www.sql.ru/forum/actualthread.aspx?tid=168912&hl=multiple+step+error

какой-то монолог получается :)
Эсть какие мысли спецы?
11 фев 08, 09:36    [5269966]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104751
Schwan

Эсть какие мысли спецы?

Отказаться от Microsoft.Jet.OLEDB
11 фев 08, 10:02    [5270081]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
PaulWist
Member

Откуда:
Сообщений: 2267
Schwan
PaulWist
Какой тип и размерность полей в источнике и в dbf?


Источник: C_KAT2 int 4 Allow Nulls

ДБФ: C_KAT2;N;20;0


И чему равно значение в таблице R0_R, случаем не NULL.

PS Glory дал Вам дельный совет.
11 фев 08, 15:02    [5272209]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
PaulWist
Schwan
PaulWist
Какой тип и размерность полей в источнике и в dbf?


Источник: C_KAT2 int 4 Allow Nulls

ДБФ: C_KAT2;N;20;0


И чему равно значение в таблице R0_R, случаем не NULL.

PS Glory дал Вам дельный совет.


нет там 5 записей со значениями 1,2,3,4,5

Очень странно что Access c dbf через Jet нормально работает, а SQL Server нет..
11 фев 08, 16:34    [5272825]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Schwan
Member

Откуда: г. Владимир
Сообщений: 522
Glory
Schwan

Эсть какие мысли спецы?

Отказаться от Microsoft.Jet.OLEDB


что тогда dts, vfp? В любом случае очень много переделывать..
11 фев 08, 16:37    [5272839]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104751
Имхо - dts
11 фев 08, 16:38    [5272842]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в DBF  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Schwan


Для уточнения. Перед экспортом DBF, каким образом очищается файл или создаётся заново, и каким образом это делается?
12 фев 08, 03:37    [5274563]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить