Jak zobaczyć wartości zmiennej tabeli w czasie debugowania w T-SQL?


187

Czy możemy zobaczyć wartości (wiersze i komórki) w zmiennej tabeli o wartości w SQL Server Management Studio (SSMS) podczas debugowania? Jeśli tak to jak?

wprowadź opis zdjęcia tutaj

Odpowiedzi:


31

To jeszcze nie zostało zaimplementowane zgodnie z tym linkiem Microsoft Connect : Microsoft Connect



2
I oto jesteśmy w 2016 roku. Nie lepiej. Łącze Connect również już nie działa.
dotNET

5
Szczerze mówiąc, nie jest to tak naprawdę odpowiedź, ponieważ nie odpowiada na pytanie, pytanie brzmi, jak to zrobić (nie czy SSMS ma jakąkolwiek funkcję), stwierdzając, że nie jest to zaimplementowane, podczas gdy istnieją sposoby wyświetlania wartości. bardzo pomocne.
Răzvan Flavius ​​Panda

1
Usuń tę odpowiedź. Poniższa odpowiedź powinna być odpowiedzią zaakceptowaną.
Vortex852456

2018, wciąż nie.
AgentFire,

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

Wstaw powyższą instrukcję w punkcie, w którym chcesz wyświetlić zawartość tabeli. Zawartość tabeli zostanie wyrenderowana jako XML w oknie lokalnych lub możesz dodać @vdo okna zegarków.

wprowadź opis zdjęcia tutaj


1
Jest to zdecydowanie obejście, które jest wystarczająco dobre, aby małe tabele mogły być prezentowane jako XML.
Faiz

4
Ale nadal nie przestawaj czytać! Kolejna niesamowita opcja poniżej! Świetny wątek !!
Mike M,

1
Miałem duże tabele z niezbyt przyjaznym do odczytania kodem XML. Robię kolejny krok - skopiuj XML i wklej w xmlgrid.net, a zobaczysz XML jako tabelę. Wizualizacja tabeli naprawdę pomaga. Oczekiwanie na wydanie SSMS, które ma przeglądarkę tabel, taką jak przeglądarka danych w Visual Studio.
Moiz Tankiwala

1
Możesz dodać „, ROOT („ rootNodeName ”)” do klauzuli „FOR XML”. Spowoduje to zebranie wielu wierszy (jeśli istnieją) w jednym katalogu głównym, co stanowi legalny dokument XML, który można wyświetlić za pomocą wizualizatora XML zamiast wizualizatora tekstowego.
JohnL4,

2
Korzystając z programu SQL Server 2016 lub nigdy nie można również użyć wersji JSON tego DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
Sousuke

18

Ten projekt https://github.com/FilipDeVos/sp_select ma procedurę składowaną, sp_selectktóra pozwala wybierać z tabeli tymczasowej.

Stosowanie:

exec sp_select 'tempDb..#myTempTable'

Podczas debugowania procedury składowanej można otworzyć nową kartę i uruchomić to polecenie, aby wyświetlić zawartość tabeli temp.


6
Idealne do tabel tymczasowych, ale nie do zmiennych tabel
Harag

Zawiesza się również, jeśli istnieje otwarta transakcja, więc nie ma większego sensu, jeśli używasz debugowania testu w środowisku takim jak tSQLt, który zawsze otwiera transakcję na początku testu.
Nathan

1
WOW WOW WOW WOW
vothaison

Dobrze - byłoby świetnie, gdybyś mógł posortować według jednej lub dwóch kolumn
user2486488

6

W procedurze składowanej utwórz globalną tabelę tymczasową ## kuszącą i napisz zapytanie wstawiania w ramach procedury składowanej, która wstawi dane z tabeli do tej tabeli tymczasowej.

Po wykonaniu tej czynności możesz sprawdzić zawartość tabeli tymczasowej, otwierając nowe okno zapytania. Wystarczy użyć „wybierz * z ## temptable”


1

Wystarczy użyć zapytania select, aby wyświetlić tabelę zmiennych, gdziekolwiek chcesz sprawdzić.

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


Tak, uzgodniono najlepszą i najszybszą opcję. Po prostu zrób to i zaznacz i uruchom tylko SQL, który chcesz uruchomić, jeśli potrzebujesz większej kontroli.
Jammin,

2
Skorzystaj z zapytania, gdzie w oknie zegarka?
Faiz

użyj select wewnątrz procedury lub dowolnego zapytania adhoc, które wykonujesz
solairaja

Ale to, co muszę przetestować, to funkcja ceniona w tabeli i generuje błąd „Instrukcje instrukcji zawarte w funkcji nie mogą zwrócić danych klientowi”. Czy jest jakiś inny sposób, aby zbadać za pomocą dostarczonych narzędzi do debugowania?
Faiz,

3
Nie, to nie rozwiązuje pytania. Myślę, że nie jest to możliwe bez żadnych dodatkowych wtyczek.
Faiz

1

Jeśli korzystasz z programu SQL Server 2016 lub nowszego, możesz go również wybrać jako wynik JSON i wyświetlić w JSON Visualizer, znacznie łatwiej jest go odczytać niż w XML i umożliwia filtrowanie wyników.

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

wprowadź opis zdjęcia tutaj


0

Doszedłem do wniosku, że nie jest to możliwe bez żadnych wtyczek.


Widziałem kilka podglądów programu Visual Studio 2010. Bardzo fantazyjne, złożone i szczegółowe ... a demonstrator nie wiedział, czy tabele tymczasowe można wyświetlić w trybie debugowania. Może kiedy zostanie wypuszczony, ale nie wstrzymuję oddechu.
Philip Kelley,

0

SQL Server Profiler 2014 wyświetla zawartość parametru wartości tabeli. Może działać również w poprzednich wersjach. Włącz SP: Rozpoczęcie lub RPC: Zdarzenie zakończone w grupie Procedury składowane i kolumnie TextData, a po kliknięciu wpisu w dzienniku pojawią się instrukcje wstawiania zmiennej tabeli. Następnie możesz skopiować tekst i uruchomić w Management Studio.

Przykładowe dane wyjściowe:

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

Dlaczego nie wybrać tabeli i wyświetlić zmienną w ten sposób?

SELECT * FROM @d

4
Proszę wyjaśnić, jak to zrobić. Dodanie SELECT * FROM @Tabledo debugowanego skryptu nie powoduje wyświetlenia wyników w oknie wyników.
StingyJack,

-3

Przepraszam chłopaki, jestem trochę spóźniony na imprezę, ale dla każdego, kto natknie się na to pytanie w późniejszym terminie, znalazłem najłatwiejszy sposób na zrobienie tego w procedurze przechowywanej:

  1. Utwórz nowe zapytanie z dowolnymi parametrami procedury zadeklarowanymi i zainicjowanymi u góry.
  2. Wklej w treści swojej procedury.
  3. Dodaj staromodną kwerendę select natychmiast po zainicjowaniu zmiennej tabeli danymi.
  4. Jeśli 3. nie jest ostatnią instrukcją w procedurze, ustaw punkt przerwania w tej samej linii, rozpocznij debugowanie i przejdź prosto do punktu przerwania.
  5. Zysk!!

odpowiedź messi19 powinna być zaakceptowana przez IMHO, ponieważ jest ona prostsza niż moja i wykonuje pracę przez większość czasu, ale jeśli jesteś podobny do mnie i masz zmienną tabelową w pętli, którą chcesz sprawdzić, to robi to dobrze bez większego wysiłku lub zewnętrznych wtyczek SSMS.


Jest to całkowicie przeciwne do tego, co OP próbuje zrobić.
Jamie Marshall,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.