Come vedere i valori di una variabile di tabella al momento del debug in T-SQL?


187

Possiamo vedere i valori (righe e celle) in una tabella con valori variabili in SQL Server Management Studio (SSMS) durante il tempo di debug? Se si, come?

inserisci qui la descrizione dell'immagine

Risposte:


31

Questo non è ancora implementato secondo questo link di Microsoft Connect : Microsoft Connect



2
Ed eccoci nel 2016. Non meglio. Anche il collegamento Connect non funziona più.
dotNET,

5
Ad essere onesti, questa non è in realtà una risposta in quanto non risponde alla domanda, la domanda è come farlo (non se SSMS ha qualche funzione per esso), affermando che questo non è implementato mentre ci sono modi per visualizzare i valori non lo è molto utile.
Răzvan Flavius ​​Panda,

1
Elimina questa risposta. La risposta di seguito dovrebbe essere la risposta accettata.
Vortex852456,

2018, ancora no.
AgentFire,

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

Inserisci l'istruzione precedente nel punto in cui desideri visualizzare il contenuto della tabella. Il contenuto della tabella verrà visualizzato come XML nella finestra dei locali, oppure puoi aggiungerlo @valla finestra degli orologi.

inserisci qui la descrizione dell'immagine


1
Questo è sicuramente un modo per aggirare che è abbastanza buono per le piccole tabelle da presentare come XML.
Faiz,

4
Ma continua a non smettere di leggere! Un'altra fantastica opzione qui sotto! Ottimo filo !!
Mike M,

1
Ho avuto grandi tabelle con XML non molto amichevole da leggere. Faccio un altro passo: copia l'XML e incolla in xmlgrid.net e puoi vedere l'XML come una tabella. La visualizzazione della tabella aiuta davvero. In attesa di una versione di SSMS con un visualizzatore di tabelle come il visualizzatore datatable in Visual Studio.
Moiz Tankiwala,

1
È possibile aggiungere ", ROOT ('rootNodeName')" alla clausola "FOR XML". Questo raccoglierà più righe (se presenti) sotto un'unica radice, il che rende un documento XML legale, che può essere visualizzato con il visualizzatore XML anziché con il visualizzatore di testo.
JohnL4,

2
Utilizzando SQL Server 2016 o mai è possibile utilizzare anche la versione JSON di questo DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
Sousuke

18

Questo progetto https://github.com/FilipDeVos/sp_select ha una procedura memorizzata sp_selectche consente la selezione da una tabella temporanea.

Uso:

exec sp_select 'tempDb..#myTempTable'

Durante il debug di una procedura memorizzata è possibile aprire una nuova scheda ed eseguire questo comando per visualizzare il contenuto della tabella temporanea.


6
Ottimo per le tabelle temporanee, ma non per le variabili di tabella
Harag

Si blocca anche se è presente una transazione aperta, quindi non è molto utile se si utilizza un debug di un test in un framework come tSQLt che apre sempre una transazione all'inizio del test.
Nathan,

1
WOW WOW WOW WOW
vothaison,

Bene - sarebbe fantastico se si potesse ordinare per una o due colonne
user2486488

6

Nella Stored Procedure creare una tabella temporanea globale ## temptable e scrivere una query di inserimento all'interno della procedura memorizzata che inserisca i dati nella tabella in questa tabella temporanea.

Al termine, è possibile verificare il contenuto della tabella temporanea aprendo una nuova finestra di query. Basta usare "select * from ## temptable"


1

Basta usare la query di selezione per visualizzare la variabile della tabella, ovunque tu voglia controllare.

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


Sì, l'opzione migliore e più rapida concordata. Basta farlo ed evidenziare ed eseguire solo l'SQL che si desidera eseguire se è necessario un maggiore controllo.
Jammin,

2
Utilizzare la query di selezione dove, nella finestra di controllo?
Faiz,

usa la selezione all'interno della procedura o qualsiasi query ad hoc che stai eseguendo
solairaja

Ma quello che devo testare è una funzione con valori di tabella e genera l'errore "Selezionare le istruzioni incluse in una funzione non può restituire dati a un client". Esiste un altro modo, specialmente per esaminare tramite gli strumenti di debug forniti?
Faiz,

3
No, questo non risolve la domanda. Penso che questo non sia possibile senza plug-in aggiuntivi.
Faiz,

1

Se si utilizza SQL Server 2016 o versioni successive, è anche possibile selezionarlo come risultato JSON e visualizzarlo in JSON Visualizer, è molto più semplice leggerlo che in XML e consente di filtrare i risultati.

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

inserisci qui la descrizione dell'immagine


0

Sono giunto alla conclusione che ciò non è possibile senza plug-in.


Ho visto alcune anteprime di Visual Studio 2010. Molto elegante, complesso e dettagliato ... e il dimostratore non sapeva se le tabelle temporanee potevano essere visualizzate in modalità debug. Forse quando viene rilasciato, ma non trattengo il respiro.
Philip Kelley,

0

SQL Server Profiler 2014 elenca il contenuto del parametro valore tabella. Potrebbe funzionare anche nelle versioni precedenti. Abilita SP: avvio o RPC: evento completato nel gruppo Stored Procedures e nella colonna TextData e quando si fa clic sulla voce nel registro si avranno le istruzioni di inserimento per la variabile della tabella. È quindi possibile copiare il testo ed eseguirlo in Management Studio.

Uscita campione:

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

Perché non selezionare semplicemente la tabella e visualizzare la variabile in quel modo?

SELECT * FROM @d

4
Per favore, spiega come procedere. L'aggiunta di uno SELECT * FROM @Tableallo script in fase di debug non genera risultati nella finestra dei risultati.
StingyJack,

-3

Scusate ragazzi, sono un po 'in ritardo alla festa ma per chiunque si imbatta in questa domanda in un secondo momento, ho trovato il modo più semplice per farlo in una procedura memorizzata è:

  1. Creare una nuova query con tutti i parametri della procedura dichiarati e inizializzati nella parte superiore.
  2. Incolla nel corpo della tua procedura.
  3. Aggiungi una buona query di selezione vecchio stile immediatamente dopo l'inizializzazione della variabile della tabella con i dati.
  4. Se 3. non è l'ultima istruzione della procedura, imposta un punto di interruzione sulla stessa riga, avvia il debug e continua direttamente al punto di interruzione.
  5. Profitto!!

La risposta di messi19 dovrebbe essere quella accettata IMHO, poiché è più semplice della mia e fa il lavoro per la maggior parte del tempo, ma se sei come me e hai una variabile di tabella all'interno di un ciclo che vuoi controllare, questo fa bene il lavoro senza troppi sforzi o plugin SSMS esterni.


Questo è completamente contrario a ciò che l'OP sta cercando di fare.
Jamie Marshall,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.