2015-06-25 5 views
0

Есть ли инструмент профилирования прогресса, который позволяет мне видеть запросы, выполняемые в базе данных OpenEdge?Как создать базу данных открывания?

Мы осуществляем переход из базы данных OpenEdge в базу данных SQL. Чтобы правильно отображать данные, мы хотели бы запустить определенные отчеты приложений в базе данных OpenEdge и посмотреть, какие запросы к базе данных выполняются для извлечения данных.

Возможно ли это с помощью какого-либо инструмента профилирования прогресса (a la SQL Server Profiling)? Предпочтительно бесплатно ...

+0

Это коммерческое применение? Есть много «хорошо известных» (по крайней мере, хорошо известных для людей прогресса) коммерческих приложений, написанных в процессе, и могут быть люди, которые могут помочь вам. Но сначала им нужно будет знать, что такое приложение. –

ответ

2

Прогресс ориентирован на запись, а не на набор, ориентированный как SQL, поэтому ваши отчеты не представляют собой ни один запрос, ни набор запросов, скорее всего, много записей в сочетании с тем, что вы рассмотрите операции типа запроса.

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

Короче говоря, ваши варианты состоят в том, чтобы получить Dataserver product, чтобы вы могли прикрепить клиента Progress к базе данных SQL - это позволит вам использовать базу данных SQL без потери функциональности Progress. Второй вариант - получить копию исходного кода программы, чтобы узнать, как структурируются отчеты.

+0

Спасибо Тиму, мне сказали, что мне нужно будет перекомпилировать ABL, чтобы работать против SQL-сервера через dataserver - это правильно? – Drammy

+0

У меня нет опыта работы с продуктом Dataserver, поэтому я не могу сказать с полномочиями. Мой _guess_ будет состоять в том, что вам нужно будет перекомпилировать, если структура таблицы под DS отличается от той, которая была видна при использовании соединения с протоколом Progress DB. –

2

Тим совершенно прав - без исходного кода, глядя на запросы, вряд ли предоставит вам много понимания.

Тем не менее есть некоторые инструменты и возможности, которые будут предоставлять информацию о запросах. Вероятно, наиболее полезной для вашей цели было бы указать что-то похожее на:

-logentrytypes QryInfo -logginglevel 3 -clientlog "mylog.log" 

при запуске сеанса.

+0

Я обнаружил, что мне нужно понизить -logginglevel до 2, иначе программа выйдет из строя. Есть идеи? – Drammy

+0

Сообщения об ошибках, как правило, связаны с сообщениями об ошибках. Эти сообщения об ошибках часто указывают путь к решению проблем. Поскольку я не знаю, какие ошибки вы испытываете и не знаете о каких-либо широко известных ошибках, которые были устранены путем снижения уровня ведения журнала (за исключением нехватки дискового пространства, но это кажется слишком очевидным), мне действительно нечего предложить на пути решений. –

+0

Несомненно, авария не имеет деталей, чтобы помочь мне без источника. Не беспокойся. – Drammy

0

Вы можете использовать триггеры сеанса для определения почти любых действий любой программы без изменения или доступа к источнику этих программ. Настройка этого может быть больше работы, чем того стоит для вашей цели. У нас есть тестовая система, построенная вокруг этой идеи. Один большой недостаток: триггеры не могут быть запущены для CAN-FIND.

+0

Добавление триггеров сеанса будет мешать приложению, если оно использует триггеры для добавляемых событий. Триггер, определенный последним, будет преобладать, другой не будет выполнен. Триггер FIND, который вам нужно добавить, AFAIK не часто используется, но в OpenEdge V8 мы использовали его для вычисленных полей в браузерах. –

+0

Хорошая точка. Также стоит отметить, что триггеры могут не срабатывать точно так, как вы ожидаете - например. IIRC (и я, возможно, не так), вы не увидите триггеры создания/обновления/удаления до тех пор, пока транзакция не будет выполнена, что может быть далеко от соответствующего оператора CREATE или DELETE. – GregT

Смежные вопросы