SQLShack

Le débogage est l’une des parties les plus importantes mais douloureuses de tout processus logiciel. Pour trouver des erreurs, vous devez exécuter le code étape par étape pour voir quelle section du code est responsable de l’erreur. C’est ce qu’on appelle le débogage d’exécution.

Heureusement, SQL Server Management Studio (SSMS) est livré avec des capacités de débogage automatisées pour aider les développeurs à déboguer leurs scripts. Dans cet article, nous expliquerons pratiquement comment SSMS peut être utilisé pour déboguer des procédures stockées dans SQL Server en utilisant un exemple très simple.

Exemple

Pour notre exemple, nous utiliserons une procédure stockée « spShowOddNumbers » qui prend deux nombres comme paramètres et imprime tous les nombres impairs entre ces deux nombres spécifiés.

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

CRÉER UNE PROCÉDURE spShowOddNumbers
@LowerRange INT,
@UpperRange INT
AS
BEGIN
WHILE(@LowerRange < @UpperRange)
BEGIN
if( @ LowerRange%2!=0)
BEGIN
PRINT @LowerRange
END
SET @LowerRange [email protected] +1
END
PRINT ‘ NOMBRES IMPAIRS IMPRIMÉS ENTRE ‘+ RTRIM(@lowerRange) + ‘ et ‘+RTRIM(@UpperRange)
FIN

Le script qui appelle la procédure stockée dans SQL Server:

1
2
3
4
5
6
7
8
9

JE n’AI PAS DE problème AVEC LE FAIT QUE JE n’AI PAS de problème AVEC le fait QUE JE n’AI PAS de problème AVEC le fait QUE JE n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS de problème AVEC le fait QUE je n’AI PAS DE problème AVEC le FAIT QUE je n’AI PAS DE problème AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS DE PROBLÈME AVEC le FAIT QUE je n’AI PAS de PROBLÈME AVEC moi.

Options de débogage

Dans SQL Server Management Studio, vous disposez d’une variété d’options de débogage.

Démarrer le débogage

Pour démarrer le débogage d’une procédure stockée dans SQL Server, appuyez sur ALT + F5 ou accédez à Debug- > Démarrer le débogage, comme indiqué dans la figure ci-dessous:

 Démarrer le débogage d'une procédure stockée dans SQL

 Commencez à déboguer une procédure stockée dans SQL

Après avoir démarré le débogueur dans la fenêtre où vous appelez votre procédure stockée dans SQL Server, vous verrez qu’il y aura un curseur jaune au début de la fenêtre de requête comme indiqué ci-dessous:

 Commencer à déboguer une procédure stockée en position de curseur SQL-jaune

 Commencer à déboguer une procédure stockée dans SQL - position du curseur jaune

Maintenant que vous avez commencé le débogage, vous pouvez parcourir le code.

Passage du script

Il existe trois options pour parcourir le code: 1) Passer par-dessus, 2) Entrer et 3) Sortir. Vous pouvez voir ces options en cliquant sur Déboguer, comme indiqué dans la capture d’écran ci-dessous:

 Débogage SQL Server - Sortie

 Débogage SQL Server - Sortie
  1. Step Over(F 10)

    Step Over déplace simplement le curseur sur la ligne suivante du script exécutable. Par exemple, si le débogueur se trouve à l’emplacement suivant dans le script:

     Débogage SQL Server - Étape par étape - avant

     Débogage SQL Server - Étape par étape - avant

    Cliquer sur Étape par étape ou appuyer sur F10 déplace simplement le curseur sur la ligne suivante:

     Débogage SQL Server - Étape par étape

     Débogage SQL Server - Étape après étape
  2. Entrez dans (F 11)

    C’est l’une des fonctionnalités de débogage les plus importantes et les plus utiles. Step Into vous permet de pénétrer dans le script de procédure stockée à partir du script qui appelle cette procédure stockée.

    Il est important de mentionner que Step Into fonctionne comme Step Over. Si la ligne de script en cours d’exécution ne contient aucun appel à la procédure stockée dans SQL Server.

    Par exemple si vous Entrez Dans à:

    1
    SET @upperrange = 20

    Le débogueur déplace simplement le contrôle sur la ligne suivante:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    La ligne ci-dessus contient un appel à la procédure stockée dans SQL Server. Maintenant, si vous entrez dans cette ligne de script, le débogueur vous mènera au script de la procédure stockée ‘spShowOddNumbers’ comme indiqué dans la figure suivante.

     Débogage SQL Server - Étape dans

     Débogage SQL Server - Étape dans
  3. Step Out (Maj + F11)

    Step Out est l’opposé de Step Into. Si vous êtes dans une procédure stockée dans SQL Server et que vous souhaitez revenir au script qui appelle la procédure stockée, vous pouvez utiliser Step Out. Par exemple, si vous cliquez sur Step Over à:

    1
    ALORS QUE (@LowerRange & lt; @UpperRange)

    Le débogueur vous ramènera au script qui appelle la fonction, c’est-à-dire

     Débogage SQL Server - Sortie

     Débogage SQL Server - Sortie

Exécuter les options de débogage du curseur

exécuter une ligne à la fois. S’il y a une boucle ou un long morceau de code que vous souhaitez que votre débogueur ignore, vous pouvez utiliser l’option « Exécuter jusqu’au curseur ».

1
ALORS QUE (@LowerRange < @UpperRange)

Par exemple, si le curseur se trouve à la ligne suivante de la procédure stockée dans SQL Server et que vous souhaitez ignorer la boucle et accéder à l’instruction print après la boucle. Vous pouvez simplement aller dans l’instruction d’impression et cliquer sur « Exécuter jusqu’au curseur » comme indiqué ci-dessous:

 Débogage SQL Server - Exécuter jusqu'au curseur

 Débogage SQL Server - Exécutez le curseur

La boucle sera ignorée et votre curseur pointera maintenant sur l’instruction print.

La fenêtre locale

La fenêtre locale vous aide à garder une trace des valeurs des variables dans le script. Dans cet exemple, nous avons deux variables @LowerRange et @UpperRange dans notre script. Au début de la boucle while dans la procédure stockée dans SQL Server, la valeur de la variable @LowerRange est 5 tandis que la variable @UpperRange est 20, comme indiqué dans la figure ci-dessous:

 Débogage SQL Server - la fenêtre locale

 Débogage SQL Server - la fenêtre locale

Une fois que vous exécutez la boucle, puis vérifiez la valeur des variables, vous verrez que les variables @LowerRange et @UpperRange afficheront toutes deux 20 comme valeur. La fenêtre Locals affiche le nom, la valeur et le type de la variable. L’utilisation de la fenêtre Locals permet très simplement de suivre les changements dans les valeurs de vos variables au fur et à mesure que vous progressez dans le script.

Si vous fermez la fenêtre Locals accidentellement et que vous souhaitez la ramener, vous pouvez simplement aller à Debug-> Windows-> Locals comme indiqué ci-dessous:

 Débogage SQL Server - Étape sur les variables locales

 Débogage SQL Server - Étape par étape - variables locales

La fenêtre de surveillance

La fenêtre de surveillance est très similaire à la fenêtre des locaux. La seule différence est que vous pouvez ajouter ou supprimer des variables de la fenêtre de surveillance, ce qui peut être utile lorsque vous travaillez avec un grand nombre de variables dans des scripts plus grands.

Pour ajouter une variable à la fenêtre de surveillance, sélectionnez simplement la variable, faites un clic droit puis sélectionnez « Ajouter une montre » comme indiqué dans la capture d’écran suivante:

 Débogage SQL Server dans SSMS - ajout d'une montre

 Débogage SQL Server dans SSMS - ajout d'une montre

De même, pour supprimer une variable, cliquez avec le bouton droit sur le nom de la variable dans la fenêtre de surveillance et cliquez sur « Supprimer la montre » dans la liste des options. Comme indiqué ci-dessous:

 Débogage SQL Server dans SSMS - suppression d'une montre

 Débogage SQL Server dans SSMS - suppression d'une montre

La pile d’appels

La pile d’appels, comme son nom l’indique, affiche la pile d’appels qui ont été exécutés jusqu’au point actuel.

 Débogage SQL Server dans SSMS - la pile d'appels

 Débogage SQL Server dans SSMS - la pile d'appels

La première ligne de la pile d’appels de la figure ci-dessus nous indique que la procédure stockée spShowOddNumbers est en cours d’exécution et que le débogueur se trouve à la ligne 14 du fichier contenant cette procédure stockée. La deuxième ligne indique que cette procédure stockée a été appelée à partir du script à la ligne 7 du SQLQuery2.fichier sql.

La fenêtre immédiate

La fenêtre immédiate est similaire à la fenêtre de la console. Par exemple, vous pouvez effectuer des opérations mathématiques dans la fenêtre immédiate, vérifier les valeurs des variables, etc. La capture d’écran suivante contient un exemple de fenêtre immédiate.

 Débogage SQL Server dans SSMS - fenêtre immédiate

 Débogage SQL Server dans SSMS - fenêtre immédiate

Remarque : la commande cls efface la fenêtre immédiate !

Points d’arrêt

Un point d’arrêt est l’un des outils de débogage les plus couramment utilisés dans n’importe quel langage de programmation. Point d’arrêt vous permet de spécifier l’emplacement où vous souhaitez que votre débogueur arrête d’exécuter le code. Ils sont particulièrement utiles lorsque vous ne souhaitez pas déboguer toutes les lignes de code, mais plutôt vérifier l’état des variables à des emplacements spécifiques de votre code.

Pour mettre un point d’arrêt dans votre code, faites simplement un clic droit sur la zone grise à gauche de la ligne du script où vous souhaitez placer votre point d’arrêt. Sinon, appuyer sur F9 ajoutera automatiquement un point d’arrêt à la ligne. En appuyant à nouveau sur la touche F9, le point d’arrêt sera supprimé.

 Débogage SQL Server dans SSMS - Points d'arrêt

 Débogage SQL Server dans SSMS - Points d'arrêt

Vous pouvez voir dans la figure ci-dessus qu’un point d’arrêt a été ajouté à la ligne qui exécute la procédure stockée « spShowOddNumbers » dans SQL Server. Maintenant, déboguez ce script. Vous verrez que le débogueur commencera à la première ligne du script.

 Débogage SQL Server dans SSMS - le débogueur commençant dans la première ligne du script

 Débogage SQL Server dans SSMS - le débogueur commençant dans la première ligne du script

Appuyez maintenant sur ALT + F5 ou allez à nouveau dans le menu débogage et cliquez sur Déboguer – > Continuer. Vous verrez qu’au lieu de déboguer la ligne suivante, le débogueur passera directement à la ligne la plus proche avec le point d’arrêt.

 Débogage SQL Server dans SSMS - ajout d'une montre - Appuyez sur ALT + F5

 Débogage SQL Server dans SSMS - ajout d'une montre - Appuyez sur ALT + F5

Vous pouvez également créer des points d’arrêt conditionnels. Les points d’arrêt conditionnels ne sont atteints que lorsque les conditions spécifiées sont remplies.

Pour spécifier une condition sur le point d’arrêt, cliquez simplement avec le bouton droit sur le point d’arrêt et sélectionnez « Conditions » comme indiqué dans la figure ci-dessous:

 Débogage d'une procédure stockée SQL Server dans des conditions SSMS

 Débogage d'une procédure stockée SQL Server dans SSMS-Conditions

Une nouvelle fenêtre s’ouvre dans laquelle vous pouvez spécifier les conditions à satisfaire avant qu’un point d’arrêt puisse atteindre. Si vous souhaitez que ce point d’arrêt ne soit atteint que lorsque @LowerRange est supérieur à 15, vous pouvez l’ajouter comme condition, comme indiqué dans l’image ci-dessous:

 Débogage d'une procédure stockée SQL Server dans SSMS - Définir des variables pour une condition

Conclusion

Dans cet article, nous avons discuté des différentes options que Microsoft SQL Server Management Studio fournit pour déboguer un script ou une procédure stockée dans SQL Server.

Autres articles intéressants de Ben

Comment utiliser les fonctions intégrées de SQL Server et créer des fonctions scalaires définies par l’utilisateur

Comment Utiliser les fonctions de fenêtre

Débogage des procédures stockées dans SQL Server Management Studio (SSMS)

  • Auteur
  • Messages récents
 Ben Richardson
Ben Richardson dirige Acuity Training, l’un des principaux fournisseurs de formation SQL au Royaume-Uni. Il offre une gamme complète de formations SQL allant des cours d’introduction à la formation avancée en administration et en entrepôt de données – voir ici pour plus de détails. Acuity a des bureaux à Londres et à Guildford, dans le Surrey. Il blogue aussi occasionnellement sur le blog d’Acuity
Voir tous les articles de Ben Richardson

 Ben Richardson
Derniers articles de Ben Richardson (tout voir)
  • Travailler avec les thèmes du rapport Power BI – 25 février 2021
  • Power BI: Graphiques en cascade et Visuels combinés – 19 janvier 2021
  • Power BI: Mise en forme conditionnelle et couleurs des données en action – janvier 14, 2021