Страница 1 из 2
request synchronization error
Добавлено: 21 мар 2007, 17:10
Dmitry74
При выполнении запроса возникает
Ошибка синхронизации запроса
request synchronization error
Подскажите что это за синхронизация?
База в которой делается запрос дастаточно большая (3.5 гектара)
Львинная доля 98% объёма данных занимает таблица из которой и делается запрос
Сервер 1.5 FB
базу бэкапил восстанавливал но таже хрень
Запрос выполняется через IBQuery (Однонаправленый курсор)
Но когда идёт копирование данных происходит
request synchronization error
Добавлено: 21 мар 2007, 17:31
kdv
Сервер 1.5 FB
1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4 ?
Добавлено: 21 мар 2007, 17:33
Dmitry74
kdv писал(а):Сервер 1.5 FB
1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4 ?
Firebird-1.5.1.4481-Win32.exe
Добавлено: 21 мар 2007, 17:51
WildSery
А на FB 1.5.4 ошибка повторяется?
Добавлено: 21 мар 2007, 17:57
Dmitry74
WildSery писал(а):А на FB 1.5.4 ошибка повторяется?
Попробую!!!
Скажите хоть, что эта ошибка означает!?
Добавлено: 21 мар 2007, 19:31
kdv
Скажите хоть, что эта ошибка означает!?
может глюк, баг и т.п. нужно еще убедиться, что версия клиентской части соответствует серверу. Если бэкап делается, то значит сами данные читаются, и проблема здесь возникает при передаче данных по сети или какой то другой волшебной причине.
Добавлено: 21 мар 2007, 23:16
dimitr
ошибка вылазит из ядра, означает обычно несоответствие операции состоянию дескриптора запроса (типа фетч из неактивного курсора и т.п.). По идее, в нормальных обстоятельствах возникать не должна. Так что похоже на баг, хотелось бы увидеть воспроизводимый пример.
Добавлено: 22 мар 2007, 14:40
Dmitry74
dimitr писал(а):ошибка вылазит из ядра, означает обычно несоответствие операции состоянию дескриптора запроса (типа фетч из неактивного курсора и т.п.). По идее, в нормальных обстоятельствах возникать не должна. Так что похоже на баг, хотелось бы увидеть воспроизводимый пример.
Наверно пример будет сделать сложно, но можно попробывать
1. Создайте две базы с таблицей состоящей из 32 полей (тип поля Integer)
2. Наполните её тестовыми данными (IBExpert). Количество строк должно привести к размеру базы в 3.5 гектара
3. Используя встроенный сервер сделайте запрос к базе1
Select Field1,field2,field3,field4,field5 from Table
group by Field1,field2,field3,field4,field5
4. Используя тот же сервер залейте результаты запроса во вторую базу.
Это должно привести к ошибке.
Добавлено: 22 мар 2007, 15:20
kdv
4. Используя тот же сервер залейте результаты запроса во вторую базу.
залейте чем?

Добавлено: 22 мар 2007, 15:22
Dmitry74
kdv писал(а):4. Используя тот же сервер залейте результаты запроса во вторую базу.
залейте чем?

IBquery компонент Delphi7 (просто Insert into ...)
Добавлено: 22 мар 2007, 16:25
kdv
insert понятно. читать-то чем?
Добавлено: 22 мар 2007, 16:32
Dmitry74
kdv писал(а):insert понятно. читать-то чем?
Тем же IBquery
Unidirect:=True;
иначе памяти виртуальной не хватит

Добавлено: 22 мар 2007, 16:39
WildSery
Dmitry74 писал(а):2. Наполните её тестовыми данными (IBExpert).
Одну из двух баз?
Dmitry74 писал(а):3. Используя встроенный сервер сделайте запрос к базе1...
Встроенный во что? Embedded что ли? Оставить запрос открытым, или не надо?
Dmitry74 писал(а):4. Используя тот же сервер залейте результаты запроса во вторую базу.
У тебя ж суперсервер, наверное, разве можно использовать "не тот же"?

Если я то же самое сделаю одним "гетерогенным запросом" INSERT INTO ... SELECT FROM ... в IBExpert, то ошибка тоже будет?
Добавлено: 22 мар 2007, 16:48
Dmitry74
Dmitry74 писал(а):2. Наполните её тестовыми данными (IBExpert).
Одну из двух баз?
Именно одну! (затем данные перекачаем в другую)
Dmitry74 писал(а):3. Используя встроенный сервер сделайте запрос к базе1...
Встроенный во что? Embedded что ли? Оставить запрос открытым, или не надо?
Именно Embedded!
Dmitry74 писал(а):4. Используя тот же сервер залейте результаты запроса во вторую базу.
У тебя ж суперсервер, наверное, разве можно использовать "не тот же"?
Похоже Вы правы!
Если я то же самое сделаю одним "гетерогенным запросом" INSERT INTO ... SELECT FROM ... в IBExpert, то ошибка тоже будет?
Не уверен ! У меня именно две разные базы!
(Вынужден собирать данные из разных баз в одну. Жалко что FB пока нельзя делать запрос из нескольких баз одновременно, в oracle это запросто, но зато FB бесплатный и удобный в установке у клиентов

)
Добавлено: 22 мар 2007, 16:52
Dmitry74
Повашему совету использовал FB 1.5.4.
Пока полёт нормальный!
Проверяйте только на FB 1.5.1
Добавлено: 22 мар 2007, 17:06
kdv
Проверяйте только на FB 1.5.1
кому это нафиг интересно проверять на 1.5.1, если на 1.5.4 такая проблема не воспроизведется?
Добавлено: 22 мар 2007, 18:00
Dmitry74
kdv писал(а):Проверяйте только на FB 1.5.1
кому это нафиг интересно проверять на 1.5.1, если на 1.5.4 такая проблема не воспроизведется?
Тоже верно
Добавлено: 22 мар 2007, 18:25
WildSery
Dmitry74 писал(а):Не уверен ! У меня именно две разные базы!
Такую операцию эксперт позволяет сделать с разными базами.
А если использовать IBEBlock, то там можно такое...
Добавлено: 23 мар 2007, 11:23
Dmitry74
Сегодня с удивлением узнал что ошибка повторяется и
на версии 1.5.4
Обноружил что FB Сожрал всю память
Самое главное забыл сказать
запрос делается из вьюхи а во вьюхе используется функция Рекурсивная
может из-за неё
Вот её код
Код: Выделить всё
CREATE PROCEDURE FIND_CHILDREN (
KEY_PARENT BIGINT,
KEY_REF BIGINT,
KEY_BABY BIGINT)
RETURNS (
KEY_CH BIGINT)
AS
DECLARE VARIABLE CNT BIGINT;
DECLARE VARIABLE CD_CH BIGINT;
begin
KEY_CH=0;
if (key_parent=key_baby) then
begin
KEY_CH=1;
suspend;
exit;
end
SELECT rf.parent FROM refdata rf WHERE
rf.reference=:key_ref and
rf.cd_code = :key_baby INTO :CD_CH;
if (CD_CH is null) then
begin
suspend;
exit;
end
if (cd_ch=KEY_PARENT) then
begin
KEY_CH=1;
end
else
execute procedure find_children (:key_parent,:key_ref,:cd_ch) returning_values :key_ch;
suspend;
end
Добавлено: 23 мар 2007, 13:17
Dmitry74
WildSery писал(а):Dmitry74 писал(а):Не уверен ! У меня именно две разные базы!
Такую операцию эксперт позволяет сделать с разными базами.
А если использовать IBEBlock, то там можно такое...
каким образом эксперт позволяет?