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 =@LowerRange +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:
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:
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:
- 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:
Cliquer sur Étape par étape ou appuyer sur F10 déplace simplement le curseur sur la ligne suivante:
- 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 à:
1SET @upperrange = 20Le débogueur déplace simplement le contrôle sur la ligne suivante:
1EXEC spShowOddNumbers @lowerrange, @upperrangeLa 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.
- 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 à:
1ALORS QUE (@LowerRange & lt; @UpperRange)Le débogueur vous ramènera au script qui appelle la fonction, c’est-à-dire
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:
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:
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:
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:
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:
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.
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.
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é.
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.
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.
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:
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:
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
Voir tous les articles de Ben Richardson
- 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