AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.09.2009, 11:33   #1  
Shakr
Гость
 
n/a
Как убрать знаки вопроса в мониторе запросов SQL?
Цитата:
SELECT A.DESCRIPTION,A.NUM,A.DIMENSIONCODE,A.INCHARGE,A.COMPANYGROUP,A.RECVERSION,A.RECID FROM DIMENSIONS A WITH( NOLOCK) WHERE ((DATAAREAID=?) AND ((((DIMENSIONCODE=?) AND (NUM=?)) AND ((DIMENSIONCODE=?) OR (DIMENSIONCODE=?))) AND ((DIMENSIONCODE=?) OR (DIMENSIONCODE=?)))) ORDER BY A.DATAAREAID,A.DIMENSIONCODE,A.NUM OPTION(FAST 1)
Поставил галочку на "Мониторинг запросов SQL" и во множественных запросах SQL выбрал "окно Infolog"
На любом примере, который приводят тут на форуме - вместо ? стоят значения, у меня - нет. База вертится на сервере, АОС там же. Локально запускаю "тонкий" клиент.
Старый 08.09.2009, 11:53   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
это срабатывает механизм кеширования запросов.
поробнее http://axapta.mazzy.ru/lib/literals_vs_placeholders/

"убирать", скорее всего, не надо.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили:  (1).
Старый 08.09.2009, 11:58   #3  
Shakr
Гость
 
n/a
Цитата:
Сообщение от mazzy Посмотреть сообщение
это срабатывает механизм кеширования запросов.
поробнее http://axapta.mazzy.ru/lib/literals_vs_placeholders/

"убирать", скорее всего, не надо.
Мне нужно "убрать" только на время копания в запросах, после чего - возвращу всё обратно.
Цитирую кусок из статьи:
Цитата:
В утилите Profiler отсылаемые Аксаптой на сервер запросы будут выглядеть так:
Это MSSQL утилита?
Старый 08.09.2009, 12:10   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Может Вам надо просто временно добавить в код что-то типа query.literals(1) ?
Старый 08.09.2009, 12:11   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
В настройках АОСа (конфиг утилита, закладка Tracing) поставьте на время опытов галку SQL Statements и галку Bind variables. Рестартаните АОС и увидите - там будут проходить реальные значения. Только на время включенной галки будет немного ниже производительность - но если у Вас запрос не безумный (по скорости выполнения) и Вы не рабочей БД с большим кол-вом пользователей - то разницу Вы не заметите.

Я так понял - Вам это нужно. Нет?
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: glibs (1), alex55 (1), Kabardian (2).
Старый 08.09.2009, 12:21   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Добавьте в параметры командной строки у АОСа -INTERNAL=COMMENTS Тогда в запросы АОС будет добавлять комментарии с реальными значениями параметров. В логе выглядеть это будет примерно так:
X++:
SELECT COUNT(A.RECID) FROM INVENTTRANS A WHERE ((DATAAREAID=?/*'mld'*/) AND ((INVOICEID=?/*'CN00000058'*/) AND (DATEFINANCIAL=?/*2007/6/12*/)))
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: mazzy (5), glibs (1), kvan (3), Vadik (1), belugin (5), sukhanchik (7), AlexeyS (2), Lucky13 (2), aidsua (1), oip (5), alex55 (1), S.Kuskov (1), player (1).
Старый 08.09.2009, 12:33   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2Maxim Gorbunov: А при этом план перестраиваться при каждом исполнении запроса не будет? Т.е. это вообще можно получается можно добавить на рабочей БД и забыть про знаки вопросов?
__________________
Возможно сделать все. Вопрос времени
Старый 08.09.2009, 13:02   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Если честно, не изучал этот вопрос. Логически поразмыслив, а с чего бы ей план пересчитывать? Запрос ведь остается тот же, только комментарии меняются.

Я обычно этот параметр только на тестовую среду ставлю и на разработку. На рабочей как правило трассировка все равно отключена.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.09.2009, 13:02   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А при этом план перестраиваться при каждом исполнении запроса не будет?
Не будет. Значения подставляются только в лог аксапты (не в запрос)

2 Maxim Gorbunov: а ты уверен в том, что это работает на версиях старше 3.0 ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 08.09.2009, 13:10   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Я обычно этот параметр только на тестовую среду ставлю и на разработку.
Это я все понимаю логически. Просто если план не пересчитывается (что логично) - то установка этого параметра на рабочую БД никоим боком не скажется на производительности, зато очень хорошо скажется на удобстве (времени) исследования (в случае чего)
__________________
Возможно сделать все. Вопрос времени
Старый 08.09.2009, 13:17   #11  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Vadik Посмотреть сообщение
Maxim Gorbunov: а ты уверен в том, что это работает на версиях старше 3.0 ?
Проверил на 4.0 SP2. Работает
Проверил на 2009 SP1. Работает
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 08.09.2009 в 13:33.
За это сообщение автора поблагодарили: mazzy (2), Vadik (1).
Старый 08.09.2009, 13:49   #12  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Vadik Посмотреть сообщение
Не будет. Значения подставляются только в лог аксапты (не в запрос)
Хм... По-моему, в запрос они тоже подставляются. По крайней мере, в SQL Profiler'е я их видел Другое дело, что это комментарии, и оптимизатор их все равно игнорирует.

Цитата:
Сообщение от Vadik Посмотреть сообщение
2 Maxim Gorbunov: а ты уверен в том, что это работает на версиях старше 3.0 ?
Да. И на 4ке, и на 5ке
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.09.2009, 15:12   #13  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
По-моему при повторном использовании запросов ядро аксапты и параметры от использованных запросов показывает - то есть ненастоящие. Так что аккуратнее с этим.

Чтобы всегда актуальные параметры показывал, нужно запретить повторное использование запросов (для этого был еще один ключ командной строки - на память не помню - где то описан на форуме), тогда в логе параметры будут актуальные, но это также скажется негативно на производительности.
Старый 08.09.2009, 15:39   #14  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Аудит блокировок
За это сообщение автора поблагодарили: sukhanchik (5).
Старый 08.09.2009, 15:53   #15  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
при повторном использовании запросов ядро аксапты и параметры от использованных запросов показывает - то есть ненастоящие. Так что аккуратнее с этим.
А... вот теперь все понятно. Т.е. комментарии все-таки рояля не играют в плане производительности, но и врут в плане данных при повторном использовании.
А если хочется чтобы не врали - извольте регулярно перестраивать план запроса.

Проще говоря - использование данного параметра командной строки вместе с параметром NoCursorReuse (а иначе зачем нам негарантированно верная информация) фактически совпадает с галочкой Bind variables конфигурации АОСа.

А галочку ставить удобнее
__________________
Возможно сделать все. Вопрос времени
Старый 09.09.2009, 00:07   #16  
McArrow is offline
McArrow
Участник
 
45 / 38 (2) +++
Регистрация: 18.05.2009
Часто мне бывает удобно отловить интересующий меня запрос средством трассировки, подставить в нём значения вместо плэйсхолдеров и выполнить его в утилите для непосредственного доступа к базе данных. Обычно этих самых значений бывает большое количество, и подставлять их ручками не удобно и долго. Поэтому на досуге я сделал маленькую доработку для автоматизации подстановки значений вместо плэйсхолдеров и запуска любимой утилиты с загрузкой текста запроса. На форме "Журнал трассировки операторов SQL", которая удобно вызывается из инфолога, я добавил новый пункт в меню "Функции", который и делает вышеописанные манипуляции. Можно индивидуально для каждого пользователя настраивать вызываемое внешнее приложение. Протестировано под Oracle, использование MS SQL также предусмотрено.
Вложения
Тип файла: xpo SharedProject_MTools_SysTraceSQLBind.xpo (44.9 Кб, 371 просмотров)
За это сообщение автора поблагодарили: mazzy (2), ena_ax (1), player (1).
Теги
aos, ax2009, ax3.0, ax4.0, bind variables, database log, faq, sql, законченный пример, как правильно, полезное, трассировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
aEremenko: Использование прямых запросов SQL Blog bot DAX Blogs 4 18.07.2007 10:09
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
Мониторинг запросов SQL exceptor DAX: Программирование 11 21.02.2006 09:16
Вместо русских букв - знаки вопроса Adson DAX: Функционал 6 12.09.2003 16:54
Просмотр SQL запросов к БД с помощью файла Log Anton Sk. DAX: База знаний и проекты 3 25.01.2002 16:31
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:26.