Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Перехват запросов   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.035 c
14-1094412910
Soft
2004-09-05 23:35
2004.09.26
Технические проблемы с совестью.


1-1094400230
Ok
2004-09-05 20:03
2004.09.26
Как узнать координаты курсора мыши в KOL ???


4-1092820204
slavan
2004-08-18 13:10
2004.09.26
Буфер обмена и Делфи


9-1085028163
DanilinSA
2004-05-20 08:42
2004.09.26
Как минимизировать окно игрушки?


1-1094632662
digger
2004-09-08 12:37
2004.09.26
WinErr:01B





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский