Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О протоколировании в Interbase 7.0 / логи транзакций / 25 сообщений из 27, страница 1 из 2
03.12.2014, 12:07
    #38823459
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Здравствуйте!
В компании имеется самописное и брошенное на произвол судьбы ПО, расчитывающее план покупок компонентов для производства. Компоненты определяются путем анализа таблиц компонентов изделия. Кто-то когда-то внес запись о компоненте (и не сознается), которая парсится и пытается преобразоваться (предположительно) в число, вследствие чего выдается ошибка: conversion error from string "3930.0000".
В чем вопрос: подскажите, пожалуйста, какой-либо способ протоколирования работы interbase, с помощью которого можно будет найти ту проблемную запись, которая приводит к ошибке. Можно ссылку с примерами. Спасибо.
...
Рейтинг: 0 / 0
03.12.2014, 12:11
    #38823471
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
...
Рейтинг: 0 / 0
03.12.2014, 12:18
    #38823487
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chd,

Версию сервера не указываете принципиально?

Очевидно где-то зарыт неявный каст. Как эта запись парсится-то (можно начать с зависимых от таблицы процедур и триггеров)?
...
Рейтинг: 0 / 0
03.12.2014, 12:21
    #38823492
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
DarkMaster,

IB 7. Это в названии темы указано.
...
Рейтинг: 0 / 0
03.12.2014, 12:34
    #38823512
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Симонов Денис,

Не углядел ;(
...
Рейтинг: 0 / 0
03.12.2014, 12:36
    #38823517
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
DarkMaster,

1. 7.0
2. К сожалению, мне неизвестная проблемная таблица
...
Рейтинг: 0 / 0
03.12.2014, 12:40
    #38823523
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chd,

Тогда почему вы сделали вывод о том, что кто-то предположительно внес куда-то запись, которая неправильно обрабатывается?
...
Рейтинг: 0 / 0
03.12.2014, 12:40
    #38823524
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Симонов Денис,
а там демо - это пустышка или хоть пару раз можно поработать?
...
Рейтинг: 0 / 0
03.12.2014, 12:43
    #38823528
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
DarkMaster,

вероятнее всего так, потому что для других изделий план закупок составлется нормально без ошибок.

И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?
...
Рейтинг: 0 / 0
03.12.2014, 12:48
    #38823538
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chdDarkMaster,
И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?

Это проблемная строка, из которой пытаются получить что-то другого типа (цифру, дату, время).
Искать по базе - это конечно здорово. Хотя бы предположения есть, где эта "3930.00" (как часть строки очевидно) может хранится? Сколько там таблиц всего? Может можно по названию таблицы сделать предположение о том, что там хранится?
...
Рейтинг: 0 / 0
03.12.2014, 12:48
    #38823539
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Hello, Chd!
You wrote on 3 декабря 2014 г. 12:43:51:

Chd> вероятнее всего так, потому что для других изделий план закупок
> составлется нормально без ошибок.
>
> И тогда, может, подскажете, d conversion error from string "3930.0000"
> 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда,
> скажем, в ibexpert провести глобальный поиск по базе этой строки?
этот литерал может приходить "снаружи" (из программы) на сервер,
а не обязательно храниться в базе.

тебе нужно ставить логирование всех запросов (на клиенте), которые
программа отправляет серверу.
ловить момент возникновения эксепшена и смотреть текст запроса который
привел к оному.

если программа нарисована на IBX, или Fib+, то сделать это достаточно
просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 12:49
    #38823543
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
кстати, ошибка может быть и не серверная.
нужен полный текст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 12:51
    #38823547
Sia-Ori1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
БДЕшная беда подобная вылечилась с помощью SQL-монитора, были найдены запросы проблемные.
...
Рейтинг: 0 / 0
03.12.2014, 12:56
    #38823555
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Мимопроходящий,

У них ПО "забытое"... Не факт, что есть исходники ;(
...
Рейтинг: 0 / 0
03.12.2014, 13:01
    #38823562
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Hello, Darkmaster!
You wrote on 3 декабря 2014 г. 13:00:13:

Darkmaster> У них ПО "забытое"... Не факт, что есть исходники ;(
они и не нужны
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 13:17
    #38823581
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Мимопроходящий,

Вот скриншот (приложен). В клиенте такой строки нет, т.е. вряд ли она приходит снаружи
...
Рейтинг: 0 / 0
03.12.2014, 13:22
    #38823591
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
DarkMasterchdDarkMaster,
И тогда, может, подскажете, d conversion error from string "3930.0000" 3930.0000 - это код ошибки или сама строка такая? И смогу ли я тогда, скажем, в ibexpert провести глобальный поиск по базе этой строки?

Это проблемная строка, из которой пытаются получить что-то другого типа (цифру, дату, время).
Искать по базе - это конечно здорово. Хотя бы предположения есть, где эта "3930.00" (как часть строки очевидно) может хранится? Сколько там таблиц всего? Может можно по названию таблицы сделать предположение о том, что там хранится?

74 таблицы. Исходники какие-то есть. Но не готов возиться с отладкой.
Подскажите как составить запрос для поиска это подстроки во всех таблицах БД.
...
Рейтинг: 0 / 0
03.12.2014, 14:12
    #38823663
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chd,

Ну как-то так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
execute block (searchstr varchar(100)=?searchstr)
returns (SQL varchar(2048))
as
declare variable object_name varchar(32);
declare variable field_name varchar(32);
declare variable WSQL varchar(2048);
begin
  -- select all tables
  for select rdb$relations.rdb$relation_name
      from rdb$relations
      where rdb$relations.rdb$system_flag=0 and
            rdb$relations.rdb$view_blr is null
      into :object_name
  do begin
       SQL=''; WSQL='';
       for select trim(rdb$relation_fields.rdb$field_name)
           from rdb$relation_fields
           join rdb$fields on (rdb$fields.rdb$field_name=rdb$relation_fields.rdb$field_source and
                               rdb$fields.rdb$field_type in (14,37))
           where rdb$relation_fields.rdb$relation_name=:object_name
           into :field_name
        do begin
             SQL=SQL||field_name||',';
             WSQL=WSQL||'('||field_name||' containing '''||searchstr||''') OR';
           end
        SQL=trim(',' from SQL);
        WSQL=trim('OR' from WSQL);
        SQL='SELECT '||SQL||' FROM '||trim(object_name)||' WHERE '||WSQL;
        suspend;
     end
end



Общий смысл - на вход отдаем строку, которую ищем - на выходе - получаем SQL запросы к таблицам в которых есть CHAR/VARCHAR поля, могущие содержать строку.
...
Рейтинг: 0 / 0
03.12.2014, 14:15
    #38823670
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chdПодскажите как составить запрос для поиска это подстроки во всех таблицах БД.
Извлечь все данные через IBE, запустить поиск по полученному файлу. Самое простое
...
Рейтинг: 0 / 0
03.12.2014, 14:30
    #38823687
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Fr0sT-BrutalchdПодскажите как составить запрос для поиска это подстроки во всех таблицах БД.
Извлечь все данные через IBE, запустить поиск по полученному файлу. Самое простое

а можно разом со всех таблиц? я по одной извлекаю и ищу, а их там 74
...
Рейтинг: 0 / 0
03.12.2014, 14:32
    #38823691
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chd,

Ну вы блин даете ;)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
execute block (searchstr varchar(100)=?searchstr)
returns (SQL varchar(2048), WSQL varchar(2048), aresult varchar(10))
as
declare variable object_name varchar(32);
declare variable field_name varchar(32);
declare variable fn varchar(32);
declare variable longfield varchar(1024);
begin
  -- select all tables
  for select rdb$relations.rdb$relation_name
      from rdb$relations
      where rdb$relations.rdb$system_flag=0 and
            rdb$relations.rdb$view_blr is null
      into :object_name
  do begin
       SQL=''; WSQL='';
       for select trim(rdb$relation_fields.rdb$field_name)
           from rdb$relation_fields
           join rdb$fields on (rdb$fields.rdb$field_name=rdb$relation_fields.rdb$field_source and
                               rdb$fields.rdb$field_type in (14,37))
           where rdb$relation_fields.rdb$relation_name=:object_name
           into :field_name
        do begin
             SQL=SQL||field_name||',';
             fn=field_name;
             WSQL=WSQL||'('||field_name||' containing '''||searchstr||''') OR';
           end
        SQL=trim(',' from SQL);
        WSQL=trim('OR' from WSQL);
        if (WSQL<>'') then  -- skip tables without char/varchar field
           begin
             SQL='SELECT '||SQL||' FROM '||trim(object_name)||' WHERE '||WSQL;
             WSQL='SELECT FIRST 1 '||fn||' FROM '||trim(object_name)||' WHERE '||WSQL;
             longfield=NULL;
             execute statement WSQL into :longfield;
             if (longfield is not null) then ARESULT='OK'; else ARESULT='';
             suspend;
           end
     end
end



Имя таблицы сами опеределяйте ;)
...
Рейтинг: 0 / 0
03.12.2014, 14:48
    #38823721
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
DarkMaster,

EXECUTE BLOCK / STATEMENT в InterBase 7.0 - это пять
...
Рейтинг: 0 / 0
03.12.2014, 14:59
    #38823738
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
dimitr,

Блин, совсем из головы вылетело, что у него IB... ;(
...
Рейтинг: 0 / 0
03.12.2014, 15:38
    #38823789
chd
chd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
Нашел руками. Исправил. Всем спасибо! Всем +100 в карму!
...
Рейтинг: 0 / 0
03.12.2014, 16:47
    #38823901
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О протоколировании в Interbase 7.0 / логи транзакций
chdНашел руками. Исправил. Всем спасибо! Всем +100 в карму!а теперь триггер повесь на проверку и преобразования значения.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / О протоколировании в Interbase 7.0 / логи транзакций / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]