Текущий архив: 2004.09.26;
Скачать: CL | DM;
ВнизПерехват запросов Найти похожие ветки
← →
Ega23 © (2004-08-30 09:34) [0]Господа, проблема следующая:
Есть старый проект, работает через BDE. Возникла необходимость "перехватывать" все транзакции, идущие на сервер и отписывать их в лог.
Вопрос: как это сделать? Если у всех запросов переопределить BeforeOpen (или AfterOpen, не принципиально), то тогда теряются те запросы, которые через ExecSQL выполняются.
← →
Nikolay M. © (2004-08-30 09:43) [1]BOL: Creating and Managing Traces and Templates?
← →
Ega23 © (2004-08-30 09:50) [2]Нет, мне на уровне клиента надо. Грубо говоря, тексты запросов, проходящих через BDE.
← →
Nikolay M. © (2004-08-30 10:08) [3]Уф, в Диасофте 5НТ как-то реализована возможность показа всех запросов. Возможно, тоже через события. А если нужна инфа только о транзакциях, может DbiGetTranInfo и то, что рядом с ней?
← →
Ega23 © (2004-08-30 10:15) [4]DbiGetTranInfo - это что?
← →
Nikolay M. © (2004-08-30 10:29) [5]DBTables.pas, поиск по DbiGetTranInfo, хелп по выделенному :)
Delphi syntax
function DbiGetTranInfo (hDb: hDBIDb; hXact: hDBIXact; pxInfo: pXInfo): DBIResult stdcall;
Description
DbiGetTranInfo retrieves transaction information.
Parameters
hDb Type: hDBIDb (Input)
Specifies the database handle.
hXact Type: hDBIXact (Input)
Specifies the transaction handle. If NULL, hDb is used; if not NULL, hDb is ignored.
pxInfo Type: XInfo (Output)
Pointer to the client-allocated XInfo structure.
Usage
After a successful DbiBeginTran request, the transaction state is active. The state remains active until DbiEndTran is called. While the transaction is active, the actual isolation level being used can be retrieved with this function. Since transaction nesting is currently not supported, the uNests value is unused.
Prerequisites
A valid database handle must be obtained on a database.
Completion state
Information function only; does not affect transaction processing.
DbiResult Meaning
DBIERR_NONE The function executed successfully.
← →
Ega23 © (2004-08-30 10:34) [6]Интересно.... Посмотрим...
← →
Nikolay M. © (2004-08-30 10:44) [7]Нэндл берется существующий из TDatabase, он там вроде public.
← →
sniknik © (2004-08-30 10:58) [8]а сложно перекинуть конект с "родного" BDE шного линка на ODBC шный?
если нет то все выльется в простую настройку DSN ODBC (галочку там нужно будет поставить на "вести лог запросов")
← →
Nikolay M. © (2004-08-30 11:07) [9]
> sniknik ©
Дык нужны вроде не запросы, а транзакции.
← →
Ega23 © (2004-08-30 11:14) [10]sniknik © (30.08.04 10:58) [8]
А включить/отключить это дело в ODBC в ран-тайме можно?
← →
sniknik © (2004-08-30 11:27) [11]> А включить/отключить это дело в ODBC в ран-тайме можно?
да, потребуется только переконект. изменение настройки можно через редактирование реестра для выбраного(созданого) DSN. а можно через библиотеку для ODBC (есть dll и даже вроде обертка над ней гдето, (у меня нет ;), для работы с ODBC)
(кстати засада может поджидать, если прога будет под бесправным юзером работать у которого на изменения в реестре прав нет ;)
← →
Ega23 © (2004-08-30 11:28) [12]Нет, тогда не годится. Хотя вариант красивый.
Блин, неужели нельзя в TDataSet отследить реакцию на ExecSQL? :-(
← →
sniknik © (2004-08-30 11:36) [13]> Блин, неужели нельзя в TDataSet отследить реакцию на ExecSQL? :-(
см. не датасет см. датабейс (по аналогии с ADOConnection?) в нем можно, может и в датабейсе можно. (анологичные функции выполняет)
← →
Ega23 © (2004-08-30 11:38) [14]Уже смотрел:
In TDatabase
OnLogin
Derived from TCustomConnection
AfterConnect
AfterDisconnect
BeforeConnect
BeforeDisconnect
:-((((
← →
clickmaker © (2004-08-30 11:59) [15]а через DbiRegisterCallBack, cbTrace не получится?
← →
Nikolay M. © (2004-08-30 12:07) [16]Так тебе что трейсить-то нужно? Транзакции или все запросы?
← →
Ega23 © (2004-08-30 13:48) [17]Всё, что идёт от клиента на сервер. Все Select"ы, Insert"ы, Delet"ы, Update"ы и Exec"и. :о)
← →
Ega23 © (2004-08-30 13:51) [18]В принципе, всё делается 2-мя методами: TDataSet.Open и TDataSet.ExecSQL. Можно просто 2 функции написать, чтобы SQL ещё и в файл отписвался. Но этого делать не хочется, т.к. глобальная замена по проекту может привести чёрт знает к чему. А проект работающий, более того, уже с замороженным кодом.
← →
Desdechado © (2004-08-30 13:56) [19]SQLmonitor из борландовской поставки возьми
← →
Ega23 © (2004-08-30 14:07) [20]Desdechado © (30.08.04 13:56) [19]
А он чем тут поможет???
← →
sniknik © (2004-08-30 14:16) [21]посмотри -> clickmaker © (30.08.04 11:59) [15]
точно поможет, должно, судя по хелпу.
← →
Ega23 © (2004-08-30 14:28) [22]sniknik © (30.08.04 14:16) [21]
Да, похоже это то что нужно, сейчас пробую...
← →
Desdechado © (2004-08-30 15:23) [23]2 Ega
ты ж хотел видеть все запросы - вот они там и есть
правда, отдельно от программы, зато сразу по всем БДЕшным программам
← →
Ega23 © (2004-08-30 15:28) [24]Мне не надо отдельно от программы. Более того, не надо постоянного ведения логов. Нажал 3 магические клавиши, включающие Debug ON - пишем в файл весь траффик. Снова нажа 3 клавиши, включающие Debug OFF - перестали писать траффик.
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.039 c