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:
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:
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:
- 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:
Facendo clic su Step Over o premendo F10 si sposta semplicemente il cursore sulla riga seguente:
- 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:
1SET @upperrange = 20Il debugger si sposta semplicemente il controllo alla riga successiva:
1EXEC spShowOddNumbers @lowerrange, @upperrangeLa 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.
- 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:
1WHILE(@LowerRange < @UpperRange)Il debugger si torna allo script che chiama la funzione cioè
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:
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:
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:
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:
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:
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.
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.
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.
È 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.
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.
È 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:
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:
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
Visualizza tutti i messaggi di Ben Richardson
- 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