Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Перехватить SQL запросы.


Автор: HappyLife 26.6.2007, 10:26
Доброго времени суток уважаемые форумчане. Работаю, с базой MSSQL Server через ADO.
Хочу перехватить все запросы SQL и вызовы всех процедур в своей программе.
Подскажите пожалуйста, что и как я могу перехватить? На что нужно установить хук?

Автор: HappyLife 28.6.2007, 15:06
Хорошо. Скажите пожалуйста, можно ли это как-то отследить через TADOConnection?

Автор: jonie 28.6.2007, 23:57
Цитата

Хочу перехватить все запросы SQL и вызовы всех процедур в своей программе.
а зачем? если программа твоя - то при запросе просто вызывай какую-нибудь свою же функцию (которая, например будет инкрементировать счетчик)... 
про процедуры немного не понял - имеется в виду хранимые процедуры SQL или процедуры в понимании "функции возвращаемые void" ?
подозреваю что хочется замерить производительность СУБД.....

Автор: HappyLife 2.7.2007, 08:53
jonie, Под процедурами я имею ввиду процедуры SQL.

Мне нужно выполнять одинаковые запросы на две базы. Чтобы не переписывать весь код в программе, я бы желал каким-то одним методом отправить запрос сразу на две БД.

Автор: HappyLife 2.7.2007, 10:28
Я разобрался как перехватить выполнение комманд.
За это событие отвечает метод OnWillExecute ADOConnection.
Как получить запрос SQL все понятно. Это переменная CommandText.
Но вот как быть с процедурами (StoredProc) где взять параметры передаваемые в них?

Автор: jonie 2.7.2007, 11:31
Цитата

Но вот как быть с процедурами (StoredProc) где взять параметры передаваемые в них?
они передаются в запросе SQL. Или нет?
Код

exec( N''DECLARE    @return_value int 
            EXEC    @return_value = myStoredProc param1=10
 SELECT    @return_value'')

Цитата

Мне нужно выполнять одинаковые запросы на две базы. Чтобы не переписывать весь код в программе, я бы желал каким-то одним методом отправить запрос сразу на две БД.
в любом случае придется открыть два соеденения....

Автор: HappyLife 2.7.2007, 12:32
jonie, Спасибо большое.Но это несколько не то. 

У меня на SQL есть готовые процедуры которые вызываются при помощи StoredProc. В то время когда они вызываются, срабатывает событие OnWillExecute.
В этом событие нужно сформировать новый StoredProc направленный на другую базу.
Проблема в том, что я не знаю, как "выдрать" параметры из первого StoredProc при помощи тех переменных, что передаются в метод OnWillExecute.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)