SQLShack

Il debug è una delle parti più importanti ma dolorose di qualsiasi processo software. Per trovare alcuni errori è necessario eseguire il codice passo dopo passo per vedere quale sezione del codice è responsabile dell’errore. Questo è chiamato debug di runtime.

Fortunatamente, SQL Server Management Studio (SSMS) è dotato di funzionalità di debug automatico per aiutare gli sviluppatori a eseguire il debug dei loro script. In questo articolo, spiegheremo praticamente come SSMS può essere utilizzato per eseguire il debug di stored procedure in SQL Server lavorando attraverso un esempio molto semplice.

Esempio

Per il nostro esempio, useremo una stored procedure “spShowOddNumbers” che prende due numeri come parametri e stampa tutti i numeri dispari tra questi due numeri specificati.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CREATE PROCEDURE spShowOddNumbers
@LowerRange INT,
@UpperRange INT
COME
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
if(@LowerRange%2 != 0)
BEGIN
PRINT @LowerRange
FINE
SET @LowerRange = @LowerRange + 1
FINE
STAMPA “per STAMPARE i NUMERI DISPARI TRA’ + RTRIM(@lowerRange) + ” e ” + RTRIM(@UpperRange)
FINE

Lo script che chiama la stored procedure in SQL Server:

1
2
3
4
5
6
7
8
9

DECLARE @lowerrange INT
SET @lowerrange = 5
DECLARE @upperrange INT
SET @upperrange = 20
EXEC spShowOddNumbers @lowerrange, @upperrange
DROP PROC spShowOddNumbers

opzioni di Debug

In SQL Server Management Studio, avete una varietà di opzioni di debug.

Avviare il Debug

Per avviare il debug di una stored procedure di SQL server in SQL Server, premere ALT + F5, o andare in Debug -> Avviare il Debug, come mostrato nella figura sottostante:

Avviare il debug di una stored procedure in SQL

Avviare il debug di una stored procedure in SQL

Dopo di avviare il debugger nella finestra in cui si chiama la stored procedure in SQL Server, vedrai che ci sarà un giallo cursore all’inizio della finestra di query, come illustrato di seguito:

Avvio del debug di una stored procedure in posizione cursore SQL - giallo

Avvio del debug di una stored procedure in SQL-giallo posizione del cursore

Ora che avete iniziato il debug è possibile passare attraverso il codice.

Passare attraverso lo script

Ci sono tre opzioni per passare attraverso il codice: 1) Passo oltre, 2) Passo dentro e 3) Passo fuori. Puoi vedere queste opzioni facendo clic su Debug come mostrato nello screenshot qui sotto:

 Debug di SQL Server-Uscire

Debug di SQL Server-Uscire
  1. Step Over (F 10)

    Step Over sposta semplicemente il cursore sulla riga successiva dello script eseguibile. Ad esempio, se il debugger si trova nella seguente posizione nello script:

    Debug di SQL Server-Passo oltre-prima

    SQL Server debugging-Step over-prima di

    Facendo clic su Step Over o premendo F10 si sposta semplicemente il cursore sulla riga seguente:

    Debug di SQL Server-Passo oltre-dopo

    Debug di SQL Server-Passo oltre-dopo
  2. Step Into (F 11)

    Questa è una delle funzionalità di debug più importanti e utili. Step Into consente di accedere allo script stored procedure dallo script che chiama tale stored procedure.

    È importante ricordare che Step Into funziona come Step Over. Se la riga di script in esecuzione non contiene alcuna chiamata alla stored procedure in SQL Server.

    Ad esempio se si entra in at:

    1
    SET @upperrange = 20

    Il debugger si sposta semplicemente il controllo alla riga successiva:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    La linea di cui sopra contiene una chiamata alla stored procedure in SQL Server. Ora, se entri in questa riga di script, il debugger ti porterà allo script della stored procedure ‘spShowOddNumbers’ come mostrato nella figura seguente.

     SQL Server debug-Passo in

    Debug di SQL Server-Passo in
  3. Step Out (Shift + F11)

    Step Out è l’opposto di Step Into. Se si è all’interno di una stored procedure in SQL Server e si desidera tornare allo script che chiama la stored procedure, è possibile utilizzare Step Out. Ad esempio, se fai clic su Passa a:

    1
    WHILE(@LowerRange &lt; @UpperRange)

    Il debugger si torna allo script che chiama la funzione cioè

    debug di SQL Server - Passo

    il debug di SQL Server - Passo

Esecuzione A Cursore

opzioni di Debug eseguire una riga alla volta. Se c’è un ciclo o un lungo pezzo di codice che vuoi che il tuo debugger salti, puoi usare l’opzione ‘Esegui al cursore’.

1
WHILE(@LowerRange < @UpperRange)

Per esempio, se il cursore si trova nella seguente riga di stored procedure in SQL Server e si desidera saltare il ciclo e andare per l’istruzione di stampa dopo il ciclo. Puoi semplicemente andare all’istruzione print e fare clic su “Esegui al cursore” come mostrato di seguito:

 Debug di SQL Server-Esegui al cursore

Debug di SQL Server-Esegui al cursore

Il ciclo verrà saltato e il cursore ora punterà all’istruzione print.

La finestra locale

La finestra locale consente di tenere traccia dei valori delle variabili nello script. In questo esempio, abbiamo due variabili @ LowerRange e @ UpperRange nel nostro script. All’inizio del ciclo while nella stored procedure in SQL Server il valore della variabile @ LowerRange è 5 mentre la variabile @ UpperRange è 20 come mostrato nella figura seguente:

Debug di SQL Server-la finestra locale

Debug di SQL Server-la finestra locale

Una volta eseguito il ciclo e quindi controllato il valore delle variabili, vedrai che le variabili @LowerRange e @UpperRange mostreranno entrambe 20 come valore. La finestra Locals visualizza il Nome, il Valore e il Tipo della variabile. L’utilizzo della finestra Locals rende molto semplice tenere traccia delle modifiche nei valori delle variabili man mano che si procede nello script.

Se chiudi accidentalmente la finestra Locals e vuoi riportarla indietro, puoi semplicemente andare su Debug- > Windows – > Locals come mostrato di seguito:

Debug di SQL Server - Passaggio su variabili locali

SQL Server debugging-Step over-local variables

The Watch Window

The Watch window is very similar to the Locals window. L’unica differenza è che è possibile aggiungere o rimuovere variabili dalla finestra di controllo, che può essere utile quando si lavora con un gran numero di variabili in script più grandi.

Per aggiungere una variabile a Guardare la finestra, è sufficiente selezionare la variabile, fare clic destro e selezionare “Aggiungi Guardare”, come mostrato nel seguente screenshot:

il debug di SQL Server in sql server management studio - aggiunta di un orologio

il debug di SQL Server in sql server management studio - aggiunta di un orologio

allo stesso modo, per rimuovere una variabile, fare clic con il nome della variabile nella finestra espressioni di controllo e fare clic su “Elimina Guardare” dalla lista di opzioni. Come mostrato di seguito:

Debug di SQL Server in SSMS-eliminazione di un orologio

Debug SQL Server in SSMS-eliminazione di un orologio

Lo stack di chiamate

Lo stack di chiamate, come suggerisce il nome, visualizza lo stack di chiamate che sono state eseguite fino al punto corrente.

debug di SQL Server in sql server management studio - lo stack di chiamate

il debug di SQL Server in sql server management studio - lo stack di chiamate

La prima riga dello Stack di Chiamata nella figura sopra, ci dice che attualmente il spShowOddNumbers stored procedure viene eseguita e, al momento, il debugger è in linea 14 del file che contiene questa stored procedure. La seconda riga indica che questa stored procedure è stata chiamata dallo script alla riga 7 di SQLQuery2.file sql.

La finestra immediata

La finestra Immediata è simile alla finestra della console. Ad esempio, è possibile eseguire operazioni matematiche all’interno della finestra Immediata, verificare i valori delle variabili, ecc. La schermata seguente contiene un esempio di una finestra immediata.

Debug SQL Server in SSMS-finestra immediata

Debug SQL Server in SSMS-finestra immediata

Nota: il comando cls cancella la finestra immediata!

Punti di interruzione

Un punto di interruzione è uno degli strumenti di debug più comunemente utilizzati in qualsiasi linguaggio di programmazione. Breakpoint consente di specificare la posizione in cui si desidera che il debugger interrompa l’esecuzione del codice. Sono particolarmente utili quando non si desidera eseguire il debug di tutte le righe di codice, piuttosto si desidera controllare lo stato delle variabili in posizioni specifiche nel codice.

Per inserire un punto di interruzione nel codice, è sufficiente fare clic destro sull’area grigia sul lato sinistro della riga dello script in cui si desidera inserire il punto di interruzione. In alternativa, premendo F9 si aggiungerà automaticamente un punto di interruzione alla linea. Premendo nuovamente il tasto F9 si rimuove il punto di interruzione.

Debug di SQL Server nei punti di interruzione SSMS

Debug di SQL Server in SSMS-Punti di interruzione

È possibile vedere nella figura sopra, che un punto di interruzione è stato aggiunto alla riga che esegue la stored procedure “spShowOddNumbers” in SQL Server. Ora, esegui il debug di questo script. Vedrai che il debugger inizierà alla prima riga dello script.

 SQL Server debugging in SSMS-il debugger che inizia nella prima riga dello script

Debug di SQL Server in SSMS-il debugger che inizia nella prima riga dello script

Ora premi ALT + F5 o vai di nuovo al menu debug e fai clic su Debug -> Continua. Vedrai che invece di eseguire il debug della riga successiva, il debugger salterà direttamente alla riga più vicina con il punto di interruzione.

 SQL Server debug in SSMS-aggiunta di un orologio-Premere ALT + F5

SQL Server debug in SSMS-aggiunta di un orologio-Premere ALT + F5

È anche possibile creare punti di interruzione condizionali. I punti di interruzione condizionali vengono raggiunti solo quando sono soddisfatte le condizioni specificate.

Per specificare una condizione sul punto di interruzione, è sufficiente fare clic destro sul punto di interruzione e selezionare “Condizioni” come mostrato nella figura seguente:

Debug di una stored procedure SQL Server in condizioni SSMS

Debug di una stored procedure SQL Server in SSMS-Conditions

Verrà aperta una nuova finestra in cui è possibile specificare le condizioni da soddisfare prima che un punto di interruzione possa colpire. Se vuoi che questo punto di interruzione venga colpito solo quando @LowerRange è maggiore di 15, puoi aggiungere questo come condizione, come mostrato nell’immagine qui sotto:

Debug di una stored procedure SQL Server in SSMS - Impostazione di variabili per una condizione

Conclusione

In questo articolo, abbiamo discusso quali diverse opzioni offre Microsoft SQL Server Management Studio per il debug di uno script o di una stored procedure in SQL Server.

Altri grandi articoli da Ben

Come utilizzare SQL Server built-in funzioni e creare definito dall’utente funzioni scalari

Come Utilizzare le Funzioni Finestra

Debug di stored procedure in SQL Server Management Studio (SSMS)

  • Autore
  • Post Recenti
Ben Richardson
Ben Richardson corre Acuità la Formazione di un fornitore leader di SQL formazione del regno UNITO. Offre una gamma completa di corsi di formazione SQL da corsi introduttivi fino all’amministrazione avanzata e formazione data warehouse-vedi qui per maggiori dettagli. Acuity ha uffici a Londra e Guildford, Surrey. Ha anche un blog di tanto in tanto sulla Acuità blog
Visualizza tutti i messaggi di Ben Richardson

Ben Richardson
Ultimi messaggi di Ben Richardson (vedi tutti)
  • Lavorare con Alimentazione BI report temi – febbraio 25, 2021
  • Alimentazione BI: Grafici a Cascata e Combinati Immagini – gennaio 19, 2021
  • Power BI: Formattazione condizionale e colori dei dati in azione-Gennaio 14, 2021