SQL. Отладка хранимых процедур и выявление причин ошибок

Используйте хранимую процедуру exec print (str) для вывода интересующих переменных - она пишет в таблицу as_trace с кодом print. В кабинете администратора можно посмотреть последние результаты вывода этой процедуры.

Вы можете запускать процедуру прямо из окна редактирования SQL. 

Заполняете параметры (можно просто скопировать их из процедуры) в формате "@name=value,"

Для сложных типов формат такой: @[parameterName]___[SQLType]=[key]||[value]___[key]||[value]  

  • где SQLType - это CRUDFilterParameter, DictionaryParameter, ExtendedDictionaryParameter. 
  • Разделители это тройное подчеркивание (между названием параметра и типом). 
  • параметры сложного типа разделяются также тройным подчеркиваем(___) и внутри 2 вертикальные линии (||).

Примечание: 

При тестовом вызове происходит Rollback транзакции. Т.е. все изменения в базе будут отменены, но при этом вы получите все данные, которые выдает процедура. 

Как получить значения параметров, которые передаются в хранимые процедуры? 

Для этого указываем в URL параметр debug=[имя хранимки].

В итоге значения параметров попадут в trace print таблицу (выводится название и все параметры со значениями). 

Пример адреса: https://falcon.web-automation.ru/pages?debug=crud_pages_getitems

Примечание: данный режим работает, если только значения ядре переданы через DynamicParameters (в большинстве случаев он используется). 

Также используйте SQL Profiler Express для просмотра какие параметры передаются в хранимые процедуры. Для этого необходимо дать права пользователю на трассировку (выполнить на сервере):

use master
GRANT ALTER TRACE TO falcon2;

Чтобы отменить право трассировки - используйте на сервере:

use master
Revoke ALTER TRACE TO fxproject2;

Более подробная документация по SQL Profiler Express - https://drive.google.com/file/d/0B8N7eBTTS7MbYmplT1NZbGk0T0U/view?usp=sharing

Если возникает ошибка или неясно почему некорректно отрабатывает запрос, смотрите запрос в SQL Profiler Express, копируете в SQL Management Studio (прямо с теми же параметрами) и проводите отладку чистого вызова в SQL Management Studio.

Примечание