Проблема с InterBase 2009

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Проблема с InterBase 2009

Сообщение Дмитрий Б. » 05 янв 2012, 03:03

Здраствуйте.

Поставил InterBase SMP 2009 9.0.3.437
Запускаю сервер ibserver.exe (через менеджер сервера).
Запускаю свою программу - выдает ошибку "message length error (encountered 287, expected 68)"
Останавливаю сервер.
Запускаю сервер ibserver.exe (WI-V7.0.0.206) в качестве приложения (через менеджер сервера), т.к. как служба он не хочет работать и автоматически стартовать при загрузке с Windows.
Запускаю свою программу - все работает.

Подскажите, что это может быть и как это можно исправить?

Спасибо. С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 05 янв 2012, 13:17

какая-то у вас обратная ситуация с ошибкой. :) Чаще люди пишут оператор SQL и "у меня ошибка", не указывая, что за ошибка. У вас наоборот - вы пишете ошибку, но не указываете, на чем именно она происходит. Если бы вы не сказали "свою программу", я бы еще понял.

С другой стороны, если вы используете 7.0 и 2009 над одной базой, значит база в формате 7.0, что не является родным для 2009.
Кстати, прочитайте
www.ibase.ru/devinfo/inst_manual.htm - научитесь устанавливать IB как сервис.

p.s. "менеджер сервера" - это не для вас, если вы программист.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 05 янв 2012, 15:16

Попробую расписать сложившуюся ситуацию поподробнее.

Аппаратное обеспечение:
CPU: Intel i5 (4 Core)
RAM: 4 Gb DDR3
HDD: 1Tb Hitachi
HDD: 160 Gb Hitachi
Остальное неважно :)

Установленное программное обеспечение:
Windows 7 Ultimate 64 bit
Embarcadero RAD Studio XE2
Borland InterBase 7.0 (WI-V7.0.0.206)
CodeGear InterBase SMP 2009 (9.0.3.437) - поставил, чтобы посмотреть как эта версия будет работать с многоядерным процессором
Компаненты для доступа к БД стандартные для Студии ХЕ2

Моя программа (МП) - Написаная в Студии ХЕ2 для замера времени выполнения операций при работе с БД.
Файл базы данных INV.GDB создан IBExpert.
(МП) выполняет следующие действия: Генерация данных - заполняет поля таблиц произвольными значениями в количестве указаном в Edit (например 1 000 000 записей), Поиск посредством запроса "select", Подсчет количества записей в таблице, Очистка таблицы.

По поводу того, что ibserver.exe запускается не как сервис не пойму почему. Раньше на ХР и 32 битной 7 инсталятор устанавливал Interbase и он работал как серсис, а здесь на 64 бит не хочет. :(

Вернемся к нашим овцам - Так вот при работе InterBase 7.0 (МП) запускается и можно выполнить любое из выше описаных действий. Запускаю сервер InterBase SMP 2009 (7.0 соответственно остановлен) (сервер стартует без каких-либо ошибок), но при запуске (МП) вылетает данная ошибка - (МП) при этом завершает свою работу.

Завершаю 2009 и стартую 7,0 все сного работает.
С другой стороны, если вы используете 7.0 и 2009 над одной базой, значит база в формате 7.0, что не является родным для 2009.
А какой формат БД будет родным для 2009? Случаем не *.ib? Если так, то как можно переконвертировать БД в новый формат (backup - restore)?

Спасибо. С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 05 янв 2012, 22:29

но при запуске (МП) вылетает данная ошибка - (МП) при этом завершает свою работу.
вы отладчиком умеете пользоваться? это чтобы определить, при чем "при этом" вылетает ошибка.
А какой формат БД будет родным для 2009? Случаем не *.ib?
расширение файла - это не формат.
про форматы БД тут
www.ibase.ru/devinfo/prevver.htm

p.s. у вас слишком много "начинающих" вопросов. рекомендую почитать статьи на сайте.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 06 дек 2012, 02:56

Здраствуйте.

Спустя некоторое время решил еще раз установить сервер InterBase 2009 SMP

Cистема: Windows 8 64 bit.
Версия: 9.0.0.206

При запуске моей программы выдаються следующие ошибки:
Note: Программа нормально работала на версии сервера Interbase 7.0 WI-V7.0.0.206

Перепробовал различные варианты запуска:
- автоматически, служба - Unable to start the server. Отказано в доступе
- вручную, служба - Unable to start the server. Отказано в доступе
- автоматически, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
- вручную, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
Все без результатно

Пробовал запускать IBMgr от имени администратора - во всех случаях выдает
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2"

Уже потерял всякую надежду, также пробовал ставить и Interbase 7.0, но и этот сервер безрезультатно, хотя на семерке получалось с ним работать только при условии запуска в виде приложения.

Может кто подсказать как вообще это побороть, а то уже голову сломал.

Спасибо, надеюсь на Вашу помощь.

С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 06 дек 2012, 10:51

Версия: 9.0.0.206
где вы ее выкопали?
http://www.ibase.ru/devinfo/allversions.htm
- вручную, служба
это как? я не понял, чем для вас отличается запуск службы автоматически и вручную.

в общем, я бы посоветовал сначала взять последний сервис-пак. Ну и уточнить, что за Win8.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 06 дек 2012, 12:53

Данную версию вытянул через rutracker.

А по поводу запусков, приношу извинения - неправильно выразился.

В Interbase Manager есть "переключатели"
Startup Mode (RadioButton)
- Automatic
- Manual

ну и (CheckBox)
Run the InterBase server as service on Windows NT

Вот здесь я и пробовал все возможные варианты.

А по поводу Windows 8, если Вы имеете ввиду номер релиза - тогда уточню и сообщу.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 06 дек 2012, 15:14

Данную версию вытянул через rutracker.
поздравляю.
Вот здесь я и пробовал все возможные варианты.
а вы сами с Панель Управления, Администрирование, Сервисы не знакомы?

Вообще, вполне вероятно что IB 2009 несколько несовместим с Win8, поскольку Win8 вышла в 2012 году, а IB2009 - в 2008 году. Почему я и обратил внимание, что неплохо бы использовать сервис-пак 2010 года.
Насчет av в gds32.dll ничего не могу сказать, такого уже давно не видел. Вин8 у вас тоже с рутрекера, или купленная? Если все с рутрекера, то мне непонятно, зачем все эти мучения.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 10 дек 2012, 03:57

... то мне непонятно, зачем все эти мучения.
Поставил Windows 8, чтобы посмотреть, что за зверь такой, ну и соответственно изучить что и как, а так как IB 7.0 запустить неудалось решил попробовать поставить версию посвежее.

Спасибо Вам большое. Все получилось.
Еще раз перечитал ссылку http://www.ibase.ru/devinfo/prevver.htm, которую Вы давали еще раньше.
По итогу выяснилось, что моя программа использовала файл БД созданный IB 7.0 (ODS 11.0), на виртуальной машине поставил IB 7.0, сделал backup, затем уже на IB 2009 сделал restore и все заработало.

Единственно, что не желает работать, так этот код

Код: Выделить всё

select 
TB_MAIN.PERIOD, TB_MAIN.DATE_EDIT, TB_MAIN.NUMB_REG, TB_MAIN.SUMMA, TB_MAIN.KV_SM, 
TB_MAIN.EL_SM, TB_MAIN.GZ_SM, TB_MAIN.CW_SM, TB_MAIN.HW_SM, 
TB_MAIN.ST_SM, TB_MAIN.OT_SM, TB_MAIN.MS_SM, TB_MAIN.TELEPHONE, 

TB_POKAZ.EL_STR, TB_POKAZ.EL_END, TB_POKAZ.EL_RAZ, TB_POKAZ.GZ_STR, TB_POKAZ.GZ_END, TB_POKAZ.GZ_RAZ, 
TB_POKAZ.CW_STR, TB_POKAZ.CW_END, TB_POKAZ.CW_RAZ, TB_POKAZ.HW_STR, TB_POKAZ.HW_END, TB_POKAZ.HW_RAZ, 
TB_POKAZ.ST_STR, TB_POKAZ.ST_END, TB_POKAZ.ST_RAZ, TB_POKAZ.OT_STR, TB_POKAZ.OT_END, TB_POKAZ.OT_RAZ 

from TB_MAIN 
inner join TB_POKAZ 
on TB_POKAZ.NUMB_REG = TB_MAIN.NUMB_REG 
where TB_MAIN.DATE_EDIT between :dateparam1 and :dateparam2
order by TB_MAIN.NUMB_REG;
В IB 7.0 это работало, а IB 2009 как бы отрабатывает без ошибки, но в итоге пустой результат, хотя записи присутствуют 100 %, но не выводятся.
Могу предположить, что IB 2009 v9.0.0.206 как-то неверно работает объединение таблиц. (Информацию по Вашей ссылке изучил http://www.ibase.ru/devinfo/allversions.htm).

Скажите пожалуйста, этот "баг" можно как-то обойти, или тоько установка другой версии только поможет?

Так как Вы являетесь непосредственным представителем компании Embarcadero, немогли-бы Вы ответить на несколько вопросов другой тематики.
1) Interbase XE3 Developer Edition - как я понял из описания на сайте - это бесплатная версия продукта для разработчиков, которая не содержит каких-либо больших технических ограничений по использованию (работа по сети и т.п., ограничения времени работы)? Или все-таки ограничения имеються. (так и не смог найти информацию об этом).
2) немножко не понял такого нюанса - You must use one of the other paid versions of InterBase to use for deployment and actual production. - Для использования Developer Edition версии необходимо чтобы была лицензия на основной продукт?
3) какой вариант лицензии необходим например для использования Сервер + 5 клиентских ПК и сколько стоит ($ или грн.)?
4) лицензия на 1 клиента - это означает, что к БД может подключаться 1 пользователь. А если например на сервере есть несколько разных БД, то 1 пользователь может подключиться только к одной из БД или он может подключиться одновременно к нескольким БД? Или все-таки это касается подключения к одной БД одного пользователя.

Большое спасибо.
С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 10 дек 2012, 10:09

Единственно, что не желает работать, так этот код
В следующий раз редактируйте код (в сообщении), пожалуйста - уберайте все эти кавычки, IBDSet и прочее, не относящееся к самому запросу, как я сделал за вас. Неудобно же читать.

по коду - нельзя дату как строку подсовывать в запрос, если только вы абсолютно уверены, что передаете дату в строковом формате IB. Крайне желательно всегда использовать для дат (и вообще) параметры (как я прописал в вашем запросе).

ваш запрос смешивает join и where, надеюсь, вы понимаете, что делаете (а скорее всего нет)
http://www.ibase.ru/devinfo/joins.htm

также я бы посоветовал использовать явные алиасы таблиц, а не писать вот эти портянки с TB_POKAZ.... TB_POKAZ... TB_POKAZ...
как-то неверно работает объединение таблиц
сомневаюсь. у вас с форматом даты скорее что-то не то. Ваш запрос в IBExpert на том же диапазоне дат работает?
Скажите пожалуйста, этот "баг" можно как-то обойти
до тех пор, пока вы не уверены, чей это "баг", принято считать его или своим, или не багом вообще.
Так как Вы являетесь непосредственным представителем компании Embarcadero
не являюсь. Представители сидят в московском представительстве. А я - авторизованный партнер :-)
это бесплатная версия продукта для разработчиков, которая не содержит каких-либо больших технических ограничений по использованию
developer edition содержит только формальный запрет на использование по сети, из физических ограничений там вроде работа не более 48 часов. Других физических ограничений нет.
какой вариант лицензии необходим например для использования Сервер + 5 клиентских ПК и сколько стоит ($ или грн.)?
такой и нужен - сервер + 5 клиентов. IBMX03ELEWM05 стоит $700 для XE3, и $750 для 2009. Если речь про гривны, то покупайте у Софтпрома и т.д.
лицензия на 1 клиента - это означает, что к БД может подключаться 1 пользователь.
до 4-х подключений с 1 компьютера к одной или разным БД. Все это написано тут
http://www.ibase.ru/ib2007license.htm

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 10 дек 2012, 14:30

В следующий раз редактируйте код (в сообщении), пожалуйста - уберайте все эти кавычки, IBDSet и прочее, не относящееся к самому запросу, как я сделал за вас. Неудобно же читать.
Спасибо, учту.
Крайне желательно всегда использовать для дат (и вообще) параметры (как я прописал в вашем запросе).
Запрос этот писал давно (тогда еще параметры не использовал), и как-то не придал этому значение, когда решил немного переделать программу, сейчас же стараюсь использовать параметры везде.
ваш запрос смешивает join и where, надеюсь, вы понимаете, что делаете (а скорее всего нет)
http://www.ibase.ru/devinfo/joins.htm
Да соглашусь, что несовсем до конца понял это. Да я чистал данную статью, и из описанных там вариантов на тот момент мне показался подходящим вариант

Код: Выделить всё

select c.id clientid, c.name, o.id orderid, o.odate
 from clients c join orders o on c.id = o.c_id
where c.name starting with 'A'
и на основе этого примера у меня и родился данный запрос, который работал.
также я бы посоветовал использовать явные алиасы таблиц, а не писать вот эти портянки с TB_POKAZ.... TB_POKAZ... TB_POKAZ...
По причине того что это был мой первый тогда запрос с объединением, и чтобы потом не путаться решил отказаться от алиасов, но теперь обязательно переделаю.

Спасибо большое.
С Уважением, Дмитрий.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 12 дек 2012, 03:04

Большое Вам спасибо, Дмитрий. С Вашей помощью у меня получилось.

Код: Выделить всё

select 

M.PERIOD, M.DATE_EDIT, M.NUMB_REG, M.SUMMA, M.KV_SM, M.EL_SM, M.GZ_SM, M.CW_SM, M.HW_SM, M.ST_SM, M.OT_SM, M.MS_SM, M.TELEPHONE, 

P.EL_STR, P.EL_END, P.EL_RAZ, P.GZ_STR, P.GZ_END, P.GZ_RAZ, P.CW_STR, P.CW_END, P.CW_RAZ, P.HW_STR, P.HW_END, P.HW_RAZ, 
P.ST_STR, P.ST_END, P.ST_RAZ, P.OT_STR, P.OT_END, P.OT_RAZ 

from TB_MAIN M 
inner join TB_POKAZ P 
on P.NUMB_REG like M.NUMB_REG 

where M.DATE_EDIT between :dateparam1 and :dateparam2 

order by M.NUMB_REG
Единственно, что у меня не вызвало небольшие затруднения, так это условие объединения таблиц

Код: Выделить всё

on P.NUMB_REG = M.NUMB_REG
перепробовал все, как мне показалось, возможное и отбрасывал всякие дополнительные условия по фильтрованию и вместо перечисления полей ставио *, и пробовал неявные объединения.
Ничто не получалось.
Но вот если убрать условие объединения

Код: Выделить всё

on P.NUMB_REG = M.NUMB_REG
, то сразу появляется результат (конечно множественное дублирование в DBGrid, но записи видно).

пришлось сделать через like:

Код: Выделить всё

on P.NUMB_REG like M.NUMB_REG 
но как мне кажеться использование LIKE в условие объединения не есть правильно.

Также я заметил данную особенность при попытке сделать Master-Detail
В компоненте DataSet_Detail в свойстве DataSource указан DataSet_Master
запрос на выборку выглядит так

Код: Выделить всё

select * from my_table where ID = :ID
и не работает (DBGrid пустой)

Если = заменить на like

Код: Выделить всё

select * from my_table where ID like :ID
то все работате.

И такое поведение для меня осталось загадкой.
Или может я что-то не так делаю?

Если Вас не затруднит, не моглибы Вы прояснить данный вопрос.

Спасибо.
С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 12 дек 2012, 11:38

в вашем случае inner необязательное слово, и

Код: Выделить всё

from TB_MAIN M
inner join TB_POKAZ P
on P.NUMB_REG like M.NUMB_REG
where M.DATE_EDIT between :dateparam1 and :dateparam2 
прекрасно заменяется на

Код: Выделить всё

from TB_MAIN M, TB_POKAZ P
where P.NUMB_REG like M.NUMB_REG
and M.DATE_EDIT between :dateparam1 and :dateparam2 
вообще объединение по like это ад какой то. LIKE предполагает наличие шаблона, то есть
field like 'data%', field like '%data', field like '%data%'.
В вашем случае like писать не надо, надо писать P.NUMB_REG = M.NUMB_REG.
Или может я что-то не так делаю?
очевидно, у вас в таблицах какие-то странные данные. Объединения делаются по точному совпадению. Всякие like, containing, starting with это уже от лукавого, значит данные совпадают частично.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Проблема с InterBase 2009

Сообщение dimitr » 12 дек 2012, 14:23

like без шаблона идентичен равенству. Разница одна - джойн по like-у никогда не пойдет через индекс, в отличие от джойна по равенству. Получается, что поиск по индексу не возвращает данные, в то время как поиск натуралом - возвращает. Вывод - или индекс битый, или в IB что-то сломали.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 12 дек 2012, 20:17

dimitr писал(а):like без шаблона идентичен равенству. Разница одна - джойн по like-у никогда не пойдет через индекс, в отличие от джойна по равенству. Получается, что поиск по индексу не возвращает данные, в то время как поиск натуралом - возвращает. Вывод - или индекс битый, или в IB что-то сломали.
А мог-ли сломаться индекс при переходе с InterBase 7.0 на InterBase 2009 посредством BackUp-Restore и лечится-ли это?
И какие могут быть последствия, если оставить как есть (т.е. LIKE)?

Спасибо.
С Уважением, Дмитрий.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Проблема с InterBase 2009

Сообщение dimitr » 12 дек 2012, 20:35

для начала проверяем гипотезу насчет индекса:

select * from my_table where ID = :ID
и
select * from my_table where ID = :ID plan (my_table natural)

и еще вот так:

select count(*) from my_table
и
select count(*) from ( select ID from my_table order by 1 )

Разные результаты будут или одинаковые? Ну и что выдает gstat для индекса по my_table.id?

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 16 дек 2012, 20:00

Наконец добрался до базы.

Код: Выделить всё

1) select * from tb_main where NUMB_REG = :NUMB_REG
= пустой результат

Код: Выделить всё

2) select * from tb_main where NUMB_REG = :NUMB_REG plan (tb_main natural)
= выдает запись соответствующая NUMB_REG

Код: Выделить всё

3) select count(*) from tb_main
= 5

Код: Выделить всё

4) select count(*) from ( select NUMB_REG from tb_main order by 1 )
=
c этим запросом у меня не получилось. Во первых выдает ошибку - Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 23. select.
Запрос select NUMB_REG from tb_main order by 1 выдает все записи первый столбца.

Теперь попробую высказать свои соображения.
Если я правильно понял 1) и 4) запросы возвращают результаты по индексу $NUMB_REG , а 2) и 3) меную его.
Соответственно пустой результат в 1) - "битый" индекс.

По gstat кроме ключей -r -t -h ничего не нашел.
По файлу БД gstat выдал

Код: Выделить всё

Database header page information:
        Flags                   0
        Checksum                12345
        Write timestamp         Dec 15, 2012 21:25:44
        Page size               4096
        ODS version             13.0
        Oldest transaction      1018
        Oldest active           1019
        Oldest snapshot         1019
        Next transaction        1147
        Sequence number         0
        Next attachment ID      0
        Implementation ID       16
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Dec 9, 2012 22:00:44
        Attributes

    Variable header data:
        Sweep interval:         20000
        *END*


Database file sequence:
File HM_MNGR6.GDB is the only file

Database log page information:
        Creation date
        Log flags:      2
                No write ahead log

        Next log page:  0

    Variable log data:
        Control Point 1:
                File name:
                Partition offset: 0     Seqno: 0        Offset: 0
        Control Point 2:
                File name:
                Partition offset: 0     Seqno: 0        Offset: 0
        Current File:
                File name:
                Partition offset: 0     Seqno: 0        Offset: 0
        *END*
Your user name and password are not defined. Ask your database administrator to
set up an InterBase login.
Не уверен, что правильно, но поправте меня пожалуйста.

Спасибо.
С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6575
Зарегистрирован: 25 окт 2004, 18:07
Контактная информация:

Re: Проблема с InterBase 2009

Сообщение kdv » 17 дек 2012, 02:44

= выдает запись соответствующая NUMB_REG
значит база битая, и ей надо срочно делать backup/restore.
http://www.ibase.ru/devinfo/gbak.htm

и при чем тут gstat??? Впрочем, о gstat спросил dimitr, а вы похоже фишку в утилитах IB не рубите вообще. Забейте на gstat, короче, научитесь потом.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Проблема с InterBase 2009

Сообщение dimitr » 17 дек 2012, 10:08

gstat в том числе покажет (если не забыть ему указать логин/пароль) число ключей в проблемном индексе. Т.е. можно будет понять, что именно не так - ключа не хватает (явно битый индекс) или причина в чем-то другом.

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Проблема с InterBase 2009

Сообщение Дмитрий Б. » 17 дек 2012, 14:55

Большое спасибо kdv и dimitr.
В ближаешее время как можно скорее сделаю backup/restore.

Добавлено 18.12.2012 11:45
Выполнил backup/restore при помощи IBExpert. Когда делал restore дополнительно поставил галочку Деактивировать индексы, после чего проблема исчезла.
Запросы

Код: Выделить всё

select * from tb_main where NUMB_REG = :NUMB_REG
select * from tb_main where NUMB_REG = :NUMB_REG plan (tb_main natural)
стали выдавать одинаковые результаты.

Получается, что программа (написана с использованием компонентов InterBase Admin RAD из RAD Studio 2010) с помощью которой я делал backup/restore не восстанавливала индексы. :-( C ее помощью я переводил базу с сервера Interbase 7.0 на Interbase 2009.

Большое спасибо за помощь.

С Уважением, Дмитрий.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя