Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 11h50   #1
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
Par défaut Possibilités de debug avec Visual studio ou SQL Server Management Studio

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 :
1
2
3
4
5
6
7
8
9
10
 
SELECT DISTINCT dbo.EC.IdUser
FROM dbo.EC INNER JOIN dbo.List_C ON dbo.EC.idList_C = dbo.LC.idList_C
WHERE dbo.List_C.idList_C IN
(
 SELECT  dbo.RP.idList_C
 FROM dbo.RP INNER JOIN
 dbo.RPC ON RP.idRP = dbo.RPC.idRP
 WHERE dbo.RP.idRP = 4
);
Merci à l'avance
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 12h17   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
ceci peut t'aider
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 09h19   #3
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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?
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 11h24   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par bibouilles Voir le message
3) De plus est il possible de débugger le sql via visual studio en debug sur une application?
OUI
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 12h40   #5
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Citation:
Envoyé par bibouilles
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?
Il n'est pas possible de faire du ligne à ligne parce que SQL est un langage à la fois ensembliste et déclaratif.
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:
Envoyé par bibouilles
3) De plus est il possible de débugger le sql via visual studio en debug sur une application?
Avec Visual Studio 2008 et 2010, oui.

@++
__________________
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
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 12h52   #6
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 13h13   #7
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 470
Points : 2 470
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par bibouilles Voir le message
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
Sous VS 2008 tu places tes points d'arrêt puis des petits coups de F11 et le pointeur de la souris sur la ligne à examiner renvoie pleins d'infos
Il est possible de cliquer sur icon + pour développer les détails des infos
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 15h00   #8
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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
Code :
1
2
 
command.ExecuteReader...
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"
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2011, 04h33   #9
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Citation:
2) -> Merci bien elsuket mais j'ai du mal à comprendre, pourrais tu m'expliquer un peut plus stp?
Pouvez-vous être plus précis ?

@++
__________________
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
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 08h29   #10
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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?
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 11h35   #11
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Citation:
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?
Oui, d'autant plus que les fonctions définies par l'utilisateur sont contre-performantes parce qu'elles ne sont pas ensemblistes.
Bref, cela fausse tout.

Citation:
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?
Si une telle erreur vous est indiquée, il s'agit d'une erreur de syntaxe.
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
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/12/2011, 12h06   #12
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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)
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 16h25   #13
Invité de passage
 
Homme
Développeur .NET
Inscription : décembre 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 28
Points : 0
Points : 0
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
bibouilles est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h08.


 
 
 
 
Partenaires

Hébergement Web