Как просмотреть данные в табличных переменных во время сеанса отладки в MS SQL Management Studio 2012?

Я хотел бы отладить сложный скрипт T-SQL с помощью SSMS 2012.

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

на Locals окно я вижу все эти переменные, но их значение отображается как (table):

Locals window

нет способа просмотреть содержимое переменной через контекстное меню или нажав на кнопку переменная.

Я попытался использовать Immediate Window для запуска запроса к переменной таблицы, но это, похоже, тоже не работает.

Immediate Window

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

3 ответов


хотя я не могу найти никакой документации, нигде, в которой явно указано, что вы не можете проверять переменные таблицы, я не верю, что это возможно. От отладчик Transact-SQL

жители и посмотреть. Эти окна отображают выделенные выражения Transact-SQL. выражения являются предложениями Transact-SQL, которые оцениваются в одно скалярное выражение. Отладчик Transact-SQL поддерживает просмотр выражения, ссылающиеся на переменные Transact-SQL, параметры или встроенные функции с именами, начинающимися с @@. В этих окнах также отображаются значения данных, которые в настоящее время назначены выражениям.

(выделено)

то есть вы можете проверять только скаляры.

Что касается вашей попытки использовать немедленное окно,ограничения на команду и функции отладчика говорит:

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


Я никогда не использовал отладчик много - каждый раз, когда я смотрел в него, я сталкиваюсь с такими ограничениями.

вот почему я все еще склонен использовать подходы"old-skool"/" printf " для отладки SQL - include extra SELECT *s либерально по всему коду, показывающему текущее состояние столы, и дополнительные PRINT или RAISERROR сообщения, которые показывают другие государства и т. д. А затем просто запустите код нормально, пока не придадите ему форму.


используя следующий код, вы можете увидеть содержимое вашей таблицы как XML.

DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)

полезно проверить, что ваши операторы SELECT возвращают. Я проверил его и он работает.

подробнее здесь.


Я просто помещаю операторы select в свой скрипт, и он отображает его в окне результатов..

выберите * из @VarTable;

теперь, когда я шагаю через мой код и нажимаю select, он отобразит значения. Затем я либо комментирую их, когда закончу тестирование, либо устанавливаю флаг тестирования.

надеюсь, что это помогает