2010-06-01 5 views
10

J'utilise SQL Server 2008 Enterprise. J'ai rencontré le problème qui indique que la ligne 9 de la procédure stockée foo rencontre le problème de verrouillage mort. Ma question est comment trouver exactement la 9ème ligne de la procédure stockée? Ma confusion est due à un problème de format de codage, comment localiser correctement la 9ème ligne.Numéro de ligne de procédure stockée SQL Server numéro

merci à l'avance, George

+1

Marc, avez-vous une expérience à partager sur la façon de trouver le numéro de ligne plus précisément? – George2

Répondre

5

C'est la ligne 9 de l'instruction CREATE PROCEDURE. Une instruction SQL est souvent multiligne alors "ligne 9" se référera à la première ligne de l'instruction (par exemple INSERT ou UPDATE)

Cependant, si vous avez des commentaires au-dessus de la procédure CREATE ou des lignes vides avant cela, vous ne pouvez pas Comptez sur cela ... alors lancez ALTER PROC avec ALTER PROC en tant que première ligne dans le batch.

+0

1. Le moyen le plus fiable est donc d'utiliser alter proc depuis SQL Server Management Studio, puis de compter le numéro de ligne? 2. Dois-je supprimer les commentaires au-dessus de la procédure de magasin du code alter proc généré par SQL Server Management Studio? – George2

+0

Ma confusion est de savoir si les lignes ci-dessus procédure alter seront comptés comme nombre de numéro de ligne - « SET ANSI_NULLS ON GO SET quoted_identifier GO », ainsi que la façon de traiter la déclaration de plusieurs lignes dans la procédure de magasin pour faire face à la ligne nombre de nombre? – George2

+1

C'est la ligne XX du CREATE PROC – gbn

12

Un conseil que j'appris another answer ...

Si vous

sp_helptext (proc name) 

SQL sortira sa version « souvenir » de la create procédure, et qui est ce qu'il obtient les numéros de ligne d'apparemment. Si vous avez SSMS dans le mode «sortie de grille», il affichera également les numéros de ligne (comme les numéros de ligne du jeu de résultats). NB: dans mon cas, il fonctionnait à partir de l'instruction CREATE PROCEDURE plus un tas de commentaires au-dessus, donc la ligne 1 était à environ 6 lignes au-dessus de l'appel CREATE PROCEDURE.

+0

+1 pour 'sp_helptext'. Merci! – LeopardSkinPillBoxHat

+2

Juste comme un FYI dans mon cas c'était 'sp_helptext proc_name' sans parens. Les parens ont peut-être été dans l'exemple à d'autres fins, mais cela n'a pas marché pour moi jusqu'à ce que je les sorte. +1 bien! – Shrout1

4

Les numéros de ligne générés par sp_helptext sont totalement différents du numéro de ligne que vous voyez dans le message d'erreur. Par exemple, dans mon erreur de procédure stockée, il est indiqué que l'erreur s'est produite sur le numéro de ligne 194, mais en réalité ma procédure stockée n'a montré que 136 lignes lorsque j'ai montré sp_helptext. BTW, j'ai utilisé SQL Server 2008.

+1

Je pense que votre mieux pour relancer votre SP en utilisant le script alter et assurez-vous que la procédure de modification est la première ligne et aucun commentaire etc ci-dessus. alors les numéros de ligne d'erreur présentés doivent correspondre. – Christo

Questions connexes