|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Bonjour, je souhaiterais connaitre toutes les possibilités que l'on a pour débugger au pas à pas une requête, une procédure stockée ou une fonction sous SQL Server 2008
le mieux serait bien évidemment que l'on puisse débugger au pas à pas ou avec des points d'arrêt sur par exemple la procédure stockée dans l'explorateur de serveurs de visual Studio (2010 Ultimate pour mon cas) et que quand on lance l'appli cela s'arrête sur le point d'arrêt. Mais voilà j'ai mis des points d'arrêt là ou cela passe et on ne s'y arrête pas? cela est-il possible? Dois-je faire une manipe spéciale? j'ai tenté la même chose en mettant une point d'arrête coté SQL Server Management Studio (2008 R2) idem, comment faire, faut-il configurer quelque chose pour avoir la même connexion? j'ai copié ma requête dans un nouveau script dans SQL Server Management Studio (avec les paramètres en dure) j'ai posé des points d'arrêts sur toute les lignes et cliqué sur le triangle vert pour lancer l'exécution en mode debug mais le pointeur de programme ne s'arrête que sur le première et après quoi que je fasse (par exemple clic sur pas à pas principale) il exécute la requête jusqu'à la fin, es-ce que je m'y prend bien ou es-ce un bug? Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Oui cette doc est complète, avec une petite expérimentation c'est parfait!
je constate que au pas à pas on ne peut débugger que requête par requête et non ligne par ligne, cela semble normal mais un peut déroutant quand on est développeur. 1) Il me semble donc qu'il est préférable de ne pas faire de grandes requêtes mais des petites qui s’appellent sinon on ne pourra pas débugger finement, qu'en pensez vous? ![]() 2) Seulement si je me sert de fonctions pour construire ma requête, elle devient fortement moins optimale car en déplaçant une partie des tables recherchées dans une fonction, on enlève à l'optimiseur la possibilité de comprendre les relations entre les tables. (voir chapitre II-D-1. Fonctions sur http://rudi.developpez.com/sqlserver...misation/#LI-B) Auriez vous une autre solution à la fois facile à debugger et optimale? 3) De plus est il possible de débugger le sql via visual studio en debug sur une application? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
OUI
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Citation:
Vous spécifiez donc ce que vous souhaitez obtenir, mais pas la façon de l'obtenir : vous faites l'inverse dans un langage par objet, par exemple. Comme vous le verrez ici, une instruction T-SQL (l'implémentation de SQL par Microsoft dans SQL Server), une instruction SQL n'est pas lue dans l'ordre dans lequel elle est spécifiée. C'est la raison pour laquelle on ne peut pas faire de ligne à ligne. De toute façon l'instruction plante ou elle ne plante pas, et vous avez la valeur des variables dans la pile. Ceci répond aussi à la question 2. D'autre part si votre base de données est bien modélisée, les requêtes s'écrivent normalement en quelques lignes ... Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#6 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
2) -> Merci bien elsuket mais j'ai du mal à comprendre, pourrais tu m'expliquer un peut plus stp?
3) -> Merci mais Comment? débugger directement avec visual? j'y arrive avec MSSMS mais je n'y arrive pas avec Visual studio 2010 Ultimate et ne trouve pas ld'article appropriés |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() ![]() |
Citation:
Il est possible de cliquer sur icon + pour développer les détails des infos |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
merci mais rien a faire, je n'arrive pas à aller sur les points d'arrêts de mes procédures.
De plus je me suis mis juste avant l'appel de la requête sur et appuyé sur F11, cela ne rentre pas dedans non plus. J'ai même vu que l'on pouvait, sur la connexion sur l'explorateur de serveur, faire clic droit : autoriser le débuggage SQL / CLR rien ne fait, impossible de renter en debug sur mes requêtes à part en faisant clic droit dessus puis en sélectionnant "Procédure stockée pas à pas" |
|
|
00
|
|
|
#9 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Citation:
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
selon vous étant donné que l'on a la "valeur des variables dans la pile" passer par des fonctions mutualiser des parties et réduire la taille des requêtes ne semble pas nécessaires pour simplifier le débogage car quand une requête plante, aussi longue et compliquée qu'elle puisse être, nous avons suffisamment d'information pour la débugger facilement es-ce bien ce que vous voulez dire?
quand m'est indiqué par exemple erreur du coté de "WHERE" ou quelque chose du genre, il n'y a obligatoirement pas 2 endroits où l'on trouve "WHERE" dans la requête sinon l'indication serait plus précise? |
|
|
00
|
|
|
#11 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Citation:
Bref, cela fausse tout. Citation:
Sous SSMS, en double-cliquant sur celle-ci, le curseur est automatiquement placé sur la ligne de code qui a généré l'erreur de syntaxe @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
10
|
|
|
#12 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
Merci beaucoup
Auriez vous une idée sur le pourquoi je n'arrive pas à débugger le sql à partir de l'appli qui l'utilise? (voir mon poste du 23) |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Développeur .NET Inscription : décembre 2011 Messages : 28 ![]() |
j'ai du nouveaux ! j'ai vu ceci :
"Lors du débogage d'applications multicouches, vous ne pouvez pas utiliser Pas à pas détaillé pour effectuer un pas à pas à parti du code de la couche Application (C#, Visual Basic ou C++), dans le code sur SQL Server 2005 (T-SQL ou SQL/CLR). La procédure consiste ici à définir un point d'arrêt dans le code de la procédure stockée et à appuyer sur Continuer (F5) afin d'exécuter le code jusqu'au point d'arrêt." sur http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx Mais quand je lance le debug, le point d'arrêt que j'ai mis sur le select de ma procédure qui était rouge, devient blanc entouré de jaune avec un warning et si je met la souris dessus s'affiche: Le point d'arrêt ne sera pas atteint pour l'instant. Aucun symbole n'a été chargé pour ce document. Et le pointeur de programme ne s'arrête pas dessus en faisant comme il disent ni même en faisant F11 j'ai vu ceci sur le forum: C/C++ général > Format des informations de débugage : Base de données du programme (/Zi) éditeur de lien > Debogage > Génération des informations de débugage : Oui (/DEBUG) à http://www.developpez.net/forums/d30...et-cest-effet/ mais n'ai pas ces propriété sur mon projet C# n'ai trouvé que des choses dans l'onglet "Déboguer" des propriétés de mon projet et même en activant toute les cases à cocher de la partie "Activer les débogueurs" cela ne change pas mon problème |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com