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

Откуда:
Сообщений: 141
На 2005-ом MS-SQL имеется "прилинкованная" БД с таблицами ".dbf".

В одной из них имеются "удаленные строки".

При выполнении запроса :
(где Adabas - "прилинкованная" база, а ARXIV - файл DBF)

SELECT *
FROM
Adabas...ARXIV


выводится ошибка :

[OLE/DB provider returned message: Запись удалена.]
[OLE/DB provider returned message: Ключ поиска не найден ни в одной записи.]
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IRowset::GetData returned 0x80040e23].
Сообщение 7346, уровень 16, состояние 2, строка 16
Could not get the data of the row from the OLE DB provider 'Microsoft.Jet.OLEDB.4.0'.

Т.е. запрос выполняется до первой "удаленной" строки. Можно ли как-нить отсечь эти строки, чтобы запрос не прерывался ?
11 ноя 09, 13:09    [7913432]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
kligger
Member

Откуда:
Сообщений: 567
IgorSmith,

А кто мешает "упаковать" dbf
11 ноя 09, 13:28    [7913642]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
IgorSmith
Member

Откуда:
Сообщений: 141
kligger,

В смысле - "упаковать" ? Ручками ?
11 ноя 09, 14:18    [7914148]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
kligger
Member

Откуда:
Сообщений: 567
IgorSmith,

Чем-нибудь открой dbf и команда pack...удалит все помеченные к удалению строки
11 ноя 09, 14:44    [7914455]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
kligger
Member

Откуда:
Сообщений: 567
хотя...некрасиво это...где-то могут быть ссылки на эти строки. Их не должно быть, но
11 ноя 09, 14:47    [7914482]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104760
А почему вы выбрали Microsoft.Jet.OLEDB для работы с DBF ?
11 ноя 09, 14:52    [7914531]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
IgorSmith
Member

Откуда:
Сообщений: 141
Glory,

А чем, извините, надо ?
11 ноя 09, 15:21    [7914784]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104760
IgorSmith
Glory,

А чем, извините, надо ?

Хм. Другим провайдером. VFP OLEDb, например. Или связкой Microsoft OLE DB Provider for ODBC+ ODBC DBF драйвер
11 ноя 09, 15:24    [7914814]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
IgorSmith
Member

Откуда:
Сообщений: 141
Glory,

У меня такой вот "линк" :

EXEC sp_addlinkedserver
@server = N'Adabas',
@srvproduct = N'Jet 4.0',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@datasrc = N'\\Kuznecov-i-v\Distrib\Adabas',
@provstr = N'dBASE 5.0'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'Adabas',
@useself = N'false',
@locallogin = null,
@rmtuser = null,
@rmtpassword = null
EXEC sp_serveroption
@server = N'Adabas',
@optname = N'rpc', @optvalue = N'false'
EXEC sp_serveroption
@server = N'Adabas',
@optname = N'rpc out',
@optvalue = N'true'


Где надо подправить ? Подскажите, please !
11 ноя 09, 15:27    [7914856]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://www.sql.ru/faq/faq_topic.aspx?fid=146
11 ноя 09, 15:57    [7915124]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
IgorSmith
Member

Откуда:
Сообщений: 141
Glory,

По скриптам из этой ссылки коннект происходит, но запросы не работают...

(1)
select * from FOX_ODBC...ARXIV

[OLE/DB provider returned message: [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции]
OLE DB error trace [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ].
Сообщение 7399, уровень 16, состояние 1, строка 2
OLE DB provider 'MSDASQL' reported an error.


(2)
select * from FOX_OLEDB...ARXIV
OLE DB error trace [Non-interface error: Provider not registered.].
Сообщение 7403, уровень 16, состояние 1, строка 1
Could not locate registry entry for OLE DB provider 'VFPOLEDB'.
11 ноя 09, 16:26    [7915374]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
Glory
Member

Откуда:
Сообщений: 104760
IgorSmith
Glory,

По скриптам из этой ссылки коннект происходит, но запросы не работают...

1. Вы ссылку внимательно читали ? Откуда вы тогда взяли такой синтаксис обращения к таблице линкованного сервера ?
2. А драйвер VFPOLEDB кто будет устанавливать на сервере ?
11 ноя 09, 16:29    [7915399]     Ответить | Цитировать Сообщить модератору
 Re: "Удаленные" строки в DBF  [new]
Andret
Member

Откуда: Киев
Сообщений: 84
При работе с DBF файлами рекомендовал бы использовать утилиту Фурсова Павла:
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=705317&hl=

Причины: В работе с DBF рано или поздно натолкнетесь на проблемы:
удаленных записей,
разных кодировок в текстовых полях,
отсутствие индексов,
отсутствие файлов с мемо-полями,
наличие хитрых смешанных форматов файлов DBASE-FoxPro.

Павел выполнил её достаточно профессионально. Для записи в SQL Server использует программный BCP - при запуске определяется лучший из доступных ODBC драйверов: Native10, Native, SQL Server.
Чтение из DBF реализовано собственным движком за основу которого был взят исходный код двух других открытых проектов. Скомпилирована утилита в VC2008sp1 под x86 и x64 платформы.

Сценарии использования: быстрая массовая заливка в промежуточные таблицы на SQL Server-е, ну а затем локальная работа с данными.

Пожалуйста, не сочтите за рекламу, а примите как совет профессионала :-)
12 ноя 09, 05:24    [7917650]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить