2011-01-22 1 views
17

ho una molto grande stored procedure che chiama altre procedure memorizzate e applica i risultati in tabelle temporanee.query tabella temporanea nella stored procedure, mentre il debug in SQL 2008 Management Studio

io sono il debug in SQL 2008 Management Studio e possono utilizzare la finestra di controllo per interrogare parametri locali ma come posso interrogare una tabella temporanea su mentre il debug?

Se la sua non è possibile c'è un approccio alternativo? Ho letto sull'uso delle variabili di tabella, sarebbe possibile interrogarle? Se sì, come lo farei?

+0

Dup di http://stackoverflow.com/questions/1900857/how-to-see-the-values-of-a-table-variable-at-debug-time-in-t-sql – Schultz9999

risposta

11

utilizzare le tabelle temporanee globali, vale a dire con il doppio hash.

insert into ##temp select ... 

Durante il debug, è possibile sospendere la SP ad un certo punto, e in un altro finestra di query, la tabella ## è disponibile per l'esecuzione di query.

select * from ##temp 

Le singole tabelle hash (#tmp) sono specifiche della sessione ed è visibile solo dalla sessione.

0

dont semplicemente cadere tabella temporanea o chiudere un'operazione

esempio

select * into #temp from myTable 

select * from #temp 
1

alternativa sarebbe quella di utilizzare una variabile nel proc memorizzato che consente di eseguire il debug al volo.

utilizzo una variabile denominata @debug_out (BIT).

funziona in questo modo

ALTER PROCEDURE [dbo]. [Usp_someProc]

@some_Var VARCHAR (15) = 'AUTO',

@debug_Out BIT = 0

BEGIN

IF @debug_Out = 1 
     BEGIN 
      PRINT('THIS IS MY TABLE'); 
      SELECT * FROM dbo.myTable; 
     END ................ 

END

La cosa grandiosa di fare questo è quando il tuo codice avvia la procedura memorizzata, l'impostazione predefinita è di non mostrare nessuna di queste sezioni di debug. quando si desidera eseguire il debug, è sufficiente passare la variabile di debug.

EXEC usp_someProc @debug_Out = 1

11

ho costruito a procedure che visualizzerà il contenuto di una tabella temporanea da un'altra connessione di database. (che non è possibile con le normali query). Si noti che utilizza DBCC PAGE & la traccia predefinita per accedere ai dati, quindi utilizzarla solo a scopo di debug.

+1

Questo funziona benissimo e non richiede modifiche alle stored procedure esistenti! Se solo potessi superare di 10 volte! – Colin

+0

bad ass ! :) !! –

+1

Questa è la migliore risposta, se si ha pieno accesso per aggiungere questi helper proc ed eseguire in Master db –