Est-il possible de débogage de requête SQL Server 2008?
Est-il possible de déboguer une requête SQL Server 2008?
Vous devez vous connecter pour publier un commentaire.
Est-il possible de déboguer une requête SQL Server 2008?
Vous devez vous connecter pour publier un commentaire.
Oui. Vous pouvez utiliser le débogueur T-SQL:
http://technet.microsoft.com/en-us/library/cc646008.aspx
Ici est de savoir comment vous étape par le biais d'une requête: http://technet.microsoft.com/en-us/library/cc646018.aspx
Que voulez-vous dire exactement par le débogage?
Voyez-vous des données incorrectes?
Vous n'obtenez pas les lignes en double?
Ce que je fais habituellement est de commencer avec un ensemble de données, généralement une ou deux lignes, si possible, et le commentaire de tous les rejoint et où les conditions.
Introduire chaque élément supplémentaire dans votre requête, un à un, en commençant avec des jointures.
À chaque étape, vous devez savoir combien d'enregistrements que vous attendiez.
Dès que vous introduisez quelque chose comme une jointure ou une condition qui ne correspond pas à votre prédiction, vous savez que vous avez trouvé l'énoncé du problème.
Si c'est une procédure stockée à l'aide de variables et de ce fait, vous pouvez toujours
PRINT
les valeurs de vos variables à différents points.Si vous voulez seulement d'exécuter à un moment donné dans une procédure stockée, vous pouvez
RETURN
à tout moment et arrêter le traitement.Si vous avez des tables temporaires qui doivent être détruits entre les exécutions pendant le débogage de votre procédure, une commune astuce que j'utilise est de créer un label comme-
alors à quel point je tiens à caution, je peux
goto cleanup
(je sais goto est horrible, mais il fonctionne très bien lorsque le débogage sprocs)Oui, vous devez définir un point d'arrêt.
Franchement je trouve le débogage pour être pratiquement inutile. Souvent, je ne veux pas voir les variables, mais plutôt les enregistrements, je serais insertion d'une table ou la mise à jour ou la suppression.
Ce que je fais est-ce que je un complexe sp pour déboguer.
J'ai d'abord créer une variable de test. Je l'ai mis =1 quand je veux tester. Cela permettra d'assurer que Toutes les actions iteh transaction sont annulées à la fin (ne veux pas vraiment changer le datbase jusqu'à ce que vous êtes sûr que le proc est en train de faire ce que vous voulez.) en faisant en sorte que la validation déclaration de la variable de test pour être fixé à 0.
À la fin de la proc j'ai généralement un si test = 1
Et entre le début et la fin, j'ai mis le sélectionner relevés pour toutes les choses que je veux voir les valeurs de. Cela peut inclure toutes les variables de table ou des tables temporaires, les enregistrements dans une table particulière, après l'insertion, les enregistrements que j'ai supprimé ou tout autre chose, j'ai besoin de le voir. Si je suis en train de tester plusieurs fois, je pourrais commenter des références à des tableaux que je connais sont de droite et de se concentrer uniquement sur ceux que j'ai changé autour.
Maintenant, je peux voir ce que l'effet de mon proc est et les modifications sont annulées dans le cas où elles n'avaient pas le droit. Pour valider les changements (et de ne pas voir les étapes intermédiaires) , j'ai simplement modifier la valeur de la variable de test.
Si j'utilise le SQL dynamique, j'ai aussi havea variable debug qu'au lieu de l'exécution de la dynamique SQl simplement imprime les résultats à l'écran. Je trouve tout cela bien plus utile dans le débogage d'un script complexe que les points d'arrêt qui m'afficher la valeur des variables.