Як бачити значення змінної таблиці під час налагодження в T-SQL?


187

Чи можемо ми побачити значення (рядки та комірки) у змінній таблиці, що оцінюється в студії управління SQL Server (SSMS) протягом часу налагодження? Якщо так, то як?

введіть тут опис зображення

Відповіді:


31

Це ще не реалізовано відповідно до цього посилання Microsoft Connect : Microsoft Connect



2
І ось ми в 2016. Не краще. Посилання Connect також більше не працює.
— dotNET

5
Якщо чесно, це насправді не відповідь, оскільки це не відповідає на питання, питання полягає в тому, як це зробити (не чи SSMS має для цього якусь особливість), заявивши, що це не реалізовано, хоча є способи відображення значень. дуже корисний.
— Пазва Развана Флавія

1
Видаліть цю відповідь. Відповідь нижче має бути прийнятою відповіддю.
— Vortex852456

2018, ще ні.
— AgentFire

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

Вставте вищезазначене твердження в точку, де ви хочете переглянути вміст таблиці. Вміст таблиці буде відображено у форматі XML у вікні місцевих жителів, або ви можете додати @vдо вікна годинника.

введіть тут опис зображення


1
Це, безумовно, обхід, який досить хороший, щоб невеликі таблиці були представлені як XML.
— Файз

4
Але все одно не переставай читати! Ще один дивовижний варіант нижче! Чудова нитка !!
— Майк М

1
У мене були великі таблиці з XML, не дуже привітними для читання. Я роблю ще один крок - скопіюйте XML і вставте в xmlgrid.net, і ви можете побачити XML як таблицю. Візуалізація таблиці справді допомагає. Очікуємо випуску SSMS, який має переглядач таблиць, як переглядач даних, у Visual Studio.
— Moiz Tankiwala

1
Ви можете додати ", ROOT ('rootNodeName')" до пункту "ЗА XML". Це дозволить зібрати кілька рядків (якщо такі є) під одним коренем, що створює законний XML-документ, який можна переглядати за допомогою візуалізатора XML замість текстового візуалізатора.
— JohnL4

2
Використовуючи SQL Server 2016 або ніколи, ви також можете використовувати JSON версію цього DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
— Суссук

18

Цей проект https://github.com/FilipDeVos/sp_select має збережену процедуру, sp_selectяка дозволяє вибирати з тимчасової таблиці.

Використання:

exec sp_select 'tempDb..#myTempTable'

Під час налагодження збереженої процедури ви можете відкрити нову вкладку і запустити цю команду, щоб побачити вміст таблиці темп.


6
Відмінно
— підходить

Також висить, якщо є відкрита транзакція, тому не надто корисно, якщо використовувати налагодження тесту в такій структурі, як tSQLt, яка завжди відкриває транзакцію на початку тесту.
— Натан

1
WOW WOW WOW WOW
— vothaison

Добре - було б чудово, якби ви могли сортувати за одним стовпцем або двома
— user2486488

6

У Збереженій процедурі створіть глобальну тимчасову таблицю ## temptable та напишіть запит на вставку у вашу збережену процедуру, яка вставляє дані у вашу таблицю до цієї тимчасової таблиці.

Після цього ви зможете перевірити вміст тимчасової таблиці, відкривши нове вікно запитів. Просто використовуйте "select * from ## temptable"


1

Просто використовуйте запит вибору, щоб відобразити таблицю змінною, де б ви хотіли перевірити.

http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/


Так, погоджений найкращий і швидкий варіант. Просто зробіть це та виділіть та виконайте лише той SQL, який ви хочете запустити, якщо вам потрібен додатковий контроль.
— Джаммін

2
Використовуйте запит вибору де, у вікні перегляду?
— Фаїз

використовуйте функцію select у межах процедури або будь-який запит adhoc, який ви виконуєте
— solairaja

Але те, що мені потрібно перевірити, це функція, що оцінюється за таблицею, і вона видає помилку "Вибір операторів, включених у функцію, не може повернути дані клієнту". Чи є інший спосіб, спеціально для перевірки за допомогою наданих інструментів налагодження?
— Фаїз

3
Ні, це не вирішує питання. Я думаю, що це неможливо без додаткових плагінів.
— Фаїз

1

Якщо ви використовуєте SQL Server 2016 або новішу версію, ви також можете вибрати його як результат JSON і відобразити його в JSON Visualizer, читати його набагато простіше, ніж у XML, і дозволяє фільтрувати результати.

DECLARE @v nvarchar(max) = (SELECT * FROM Suppliers FOR JSON AUTO)

введіть тут опис зображення


0

Я дійшов висновку, що без плагінів це неможливо.


Я бачив деякі попередні перегляди Visual Studio 2010. Дуже вигадливий, складний та докладний ... і демонстратор не знав, чи можна переглядати таблиці темп у режимі налагодження. Можливо, коли його випустять, але я не затримую дихання.
— Філіп Келлі

0

SQL Server Profiler 2014 перераховує вміст параметра значення таблиці. Може працювати і в попередніх версіях. Увімкнути SP: Starting або RPC: Завершена подія в групі «Збережені процедури» та стовпці «TextData», і при натисканні на запис у журналі з'являться оператори вставлення для змінної таблиці. Потім можна скопіювати текст і запустити в студії управління.

Вибірка зразка:

declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')

exec uspWhatever @PARAM=@p1

-1

Чому б просто не вибрати Таблицю і переглянути таким чином змінну?

SELECT * FROM @d

4
Поясніть, будь ласка, як це зробити. Додавання SELECT * FROM @Tableдо відлагодженого сценарію не видає результатів у вікно результатів.
— StingyJack

-3

Вибачте, хлопці, я трохи спізнююся на вечірку, але для тих, хто пізніше натрапив на це питання, я знайшов найпростіший спосіб зробити це в збереженій процедурі:

  1. Створіть новий запит з будь-якими параметрами процедури, оголошеними та ініціалізованими вгорі.
  2. Вставте в основу вашої процедури.
  3. Додайте старий старомодний запит вибору відразу після ініціалізації вашої змінної таблиці з даними.
  4. Якщо 3. не є останньою заявою в процедурі, встановіть точку перерви на тій же лінії, починайте налагодження і продовжуйте прямо до точки розриву.
  5. Прибуток !!

Відповідь messi19 повинна бути прийнятою однією IMHO, оскільки вона простіша за мою і виконує цю роботу більшу частину часу, але якщо ти схожий на мене і маєш змінну таблиці всередині циклу, який ти хочеш перевірити, це робить роботу непогано без особливих зусиль або зовнішніх плагінів SSMS.


Це абсолютно протилежне тому, що намагається зробити ОП.
— Джеймі Маршалл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.