我正在使用SQL Server 2008 Enterprise。我遇到了存储过程foo的第9行遇到死锁问题的问题。我的问题是如何准确找到存储过程的第9行?
我的困惑是因为编码格式问题,如何正确定位第9行。
提前谢谢, 乔治答案 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。