| 
			
			 | 
		#1 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Как убрать знаки вопроса в мониторе запросов 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)
		
	 
На любом примере, который приводят тут на форуме - вместо ? стоят значения, у меня - нет. База вертится на сервере, АОС там же. Локально запускаю "тонкий" клиент.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			это срабатывает механизм кеширования запросов. 
		
		
		
		
		
		
			
		
		
		
		
	поробнее http://axapta.mazzy.ru/lib/literals_vs_placeholders/ "убирать", скорее всего, не надо.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от mazzy
			 
 
			это срабатывает механизм кеширования запросов. 
		
	поробнее http://axapta.mazzy.ru/lib/literals_vs_placeholders/ "убирать", скорее всего, не надо. Цитирую кусок из статьи: Цитата: 
	
		
			В утилите Profiler отсылаемые Аксаптой на сервер запросы будут выглядеть так:
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может Вам надо просто временно добавить в код что-то типа query.literals(1) ?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В настройках АОСа (конфиг утилита, закладка Tracing) поставьте на время опытов галку SQL Statements и галку Bind variables. Рестартаните АОС и увидите - там будут проходить реальные значения. Только на время включенной галки будет немного ниже производительность - но если у Вас запрос не безумный (по скорости выполнения) и Вы не рабочей БД с большим кол-вом пользователей - то разницу Вы не заметите. 
		
		
		
		
		
		
			Я так понял - Вам это нужно. Нет? 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: glibs (1), alex55 (1), Kabardian (2). | |
| 
			
			 | 
		#6 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добавьте в параметры командной строки у АОСа -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). | |
| 
			
			 | 
		#7 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2Maxim Gorbunov: А при этом план перестраиваться при каждом исполнении запроса не будет? Т.е. это вообще можно получается можно добавить на рабочей БД и забыть про знаки вопросов?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если честно, не изучал этот вопрос. Логически поразмыслив, а с чего бы ей план пересчитывать? Запрос ведь остается тот же, только комментарии меняются. 
		
		
		
		
		
		
			Я обычно этот параметр только на тестовую среду ставлю и на разработку. На рабочей как правило трассировка все равно отключена. 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Модератор 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
2 Maxim Gorbunov: а ты уверен в том, что это работает на версиях старше 3.0 ? 
				__________________ 
		
		
		
		
	-ТСЯ или -ТЬСЯ ?  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Это я все понимаю логически. Просто если план не пересчитывается (что логично) - то установка этого параметра на рабочую БД никоим боком не скажется на производительности, зато очень хорошо скажется на удобстве (времени) исследования (в случае чего)
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Проверил на 2009 SP1. Работает 
				__________________ 
		
		
		
		
		
			Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 08.09.2009 в 13:33.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2), Vadik (1). | |
| 
			
			 | 
		#12 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хм... По-моему, в запрос они тоже подставляются. По крайней мере, в SQL Profiler'е я их видел  
		
		
		
		
		
		
			  Другое дело, что это комментарии, и оптимизатор их все равно игнорирует.Цитата: 
	
 
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По-моему при повторном использовании запросов ядро аксапты и параметры от использованных запросов показывает - то есть ненастоящие. Так что аккуратнее с этим. 
		
		
		
		
		
		
		
	Чтобы всегда актуальные параметры показывал, нужно запретить повторное использование запросов (для этого был еще один ключ командной строки - на память не помню - где то описан на форуме), тогда в логе параметры будут актуальные, но это также скажется негативно на производительности.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: sukhanchik (5). | |
| 
			
			 | 
		#15 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А если хочется чтобы не врали - извольте регулярно перестраивать план запроса. Проще говоря - использование данного параметра командной строки вместе с параметром NoCursorReuse (а иначе зачем нам негарантированно верная информация) фактически совпадает с галочкой Bind variables конфигурации АОСа. А галочку ставить удобнее  
		
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Часто мне бывает удобно отловить интересующий меня запрос средством трассировки, подставить в нём значения вместо плэйсхолдеров и выполнить его в утилите для непосредственного доступа к базе данных. Обычно этих самых значений бывает большое количество, и подставлять их ручками не удобно и долго. Поэтому на досуге я сделал маленькую доработку для автоматизации подстановки значений вместо плэйсхолдеров и запуска любимой утилиты с загрузкой текста запроса. На форме "Журнал трассировки операторов SQL", которая удобно вызывается из инфолога, я добавил новый пункт в меню "Функции", который и делает вышеописанные манипуляции. Можно индивидуально для каждого пользователя настраивать вызываемое внешнее приложение. Протестировано под Oracle, использование MS SQL также предусмотрено.
		 
		
		
		
			 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2), ena_ax (1), player (1). | |
| Теги | 
| aos, ax2009, ax3.0, ax4.0, bind variables, database log, faq, sql, законченный пример, как правильно, полезное, трассировка | 
| 
	
	 | 
	
		
  |