SQL Server存储过程行号问题

时间:2010-06-01 03:50:50

标签: sql-server-2008 stored-procedures deadlock

我正在使用SQL Server 2008 Enterprise。我遇到了存储过程foo的第9行遇到死锁问题的问题。我的问题是如何准确找到存储过程的第9行?

我的困惑是因为编码格式问题,如何正确定位第9行。

提前谢谢, 乔治

3 个答案:

答案 0 :(得分:13)

我从another answer了解到的一个提示......

如果你这样做

sp_helptext (proc name)

SQL将输出其创建过程语句的“记住”版本,这就是显而易见的行号。如果您在“网格输出”模式下有SSMS,那么它也会输出行号(作为结果集的行号)。

注意:在我的情况下,它是在CREATE PROCEDURE语句加上它上面的一堆注释,因此第1行比CREATE PROCEDURE调用大约6行。

答案 1 :(得分:6)

这是CREATE PROCEDURE声明中的第9行。 SQL语句通常是多行的,因此“第9行”将引用语句的第一行(例如INSERT或UPDATE)

但是,如果您有CREATE PROCEDURE之上的注释或之前的空白行,那么您就不能依赖于此...所以运行ALTER PROC并将ALTER PROC作为批次中的第一行。

答案 2 :(得分:4)

sp_helptext输出的行号与您在错误消息中看到的行号完全不同。

例如,在我的存储过程错误中,它表示错误发生在第194行,但实际上我的存储过程在显示sp_helptext时只显示了136行。顺便说一下,我使用的是SQL Server 2008。