web-dev-qa-db-fra.com

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

Existe-t-il un moyen d'accéder au code de procédure stockée dans SQL Server Management Studio? Je sais que cela est possible avec Visual Studio, mais je recherche une solution de débogage fiable à partir de Management Studio

41
Nick

Uniquement avec SQL 2008 et SSMS 2008. Sélectionnez dans le menu "Debug\Start Debugging" ou appuyez sur Alt + F5 et lancera le débogueur T-SQL étape par étape.

Sur 2005, le seul moyen est d'attacher le profileur et de surveiller l'événement SP: StmtCompleted , qui n'est pas exactement le débogueur étape par étape, mais au moins vous verrez le flux d'exécution. A ne pas faire sur une machine de production, évidemment.

26
Remus Rusanu

J'ai écrit un article de blog assez détaillé à ce sujet ici:

http://www.diaryofaninja.com/blog/2010/11/23/debugging-sql-queries-function-amp-stored-procedures-with-sql-management-studio

Fondamentalement, l'essentiel est que vous entrez votre requête SQL pour exécuter votre procédure stockée, et au lieu d'appuyer sur F5 ou frapper l'exclamation, vous appuyez sur le bouton de lecture et utilisez F10 et F11 pour parcourir et entrer dans vos proc stockés.

C'est très pratique mais personne ne semble l'utiliser.

23
Doug

La possibilité de déboguer les sprocs, qui se trouvait dans l'Analyseur de requêtes dans SQL Server 2000, n'a pas été mise dans SQL Server 2005. Microsoft a réalisé cette erreur et a remis la fonctionnalité dans SQL Server 2008.

Dans SSMS 2008, vous pouvez démarrer le débogueur en cliquant sur le bouton de débogage dans la barre d'outils ou en appuyant sur ALT + F5.

Malheureusement, l'exécution de SSMS 2008 sur une base de données 2005 ne vous permettra pas de déboguer, vous devrez donc vous en tenir à Visual Studio.

4
Nick Kavadias

Faites attention au débogage des procédures stockées à l'aide de Visual Studio. La façon dont cela est implémenté consiste à utiliser une quantité incroyable de verrouillage afin que vous ne deviez jamais le faire sur un système de production.

4
Rob Farley

Oui, dans SSMS 2008, vous pouvez certainement entrer dans le code T-SQL (bloc de code, func stocké, proc stocké) et le déboguer.

Voir cet excellent article Améliorations de Management Studio dans SQL Server 2008 pour plus de détails - il traite également du débogage (vers la fin de l'article).

3
marc_s

Veuillez être conscient lors du débogage des instances distantes avec SSMS que votre serveur et votre pare-feu client devront autoriser sqlservr.exe et ssms.exe respectivement, ainsi que le port TCP 135. Le pare-feu client dans mon cas particulier provoquait un "délai d'expiration" lors de la tentative à déboguer.

1
Adam Caviness