这篇文章http://www.novicksoftware.com/tipsandtricks/tips-erorr-handling-in-a-stored-procedure.htm提出了关于SQL Server开发的声明:“必须在每个感兴趣的sql语句之后检查错误”。对TSQL的sql调试器的相当模糊的在线描述既不反驳也不支持这种说法。
那么,真正的情况是“易于调试”的存储过程是否有50%的代码专门用于检测错误?或者有没有更好的方法来实现它,这可以更接近于在现代编程环境中找到我们熟悉的基于堆栈跟踪的调试的崩溃?
这是一个需要创建巧妙的新工具的区域,以填补现有编程环境不完美所留下的空白,或者要求我使用该程序并学习一些众所周知的最先进方式把这些东西搞定了?
ETA:得到它的尝试 - 谢谢,谢谢。实际上,为了扩展它,这里Recording SQL Server call stack when reporting errors讨论了如何模拟堆栈跟踪,因为SQL Server尚不支持堆栈跟踪。好吧,至少在查看文章之后,如何在你自己的代码库中模拟它 - 没有所有这些东西的遗留代码库将更难处理。
答案 0 :(得分:2)
您可以使用:
ERROR_LINE()
获取有关发生问题的行的信息。要使用它,您必须使用“try ... catch”进行错误处理。此信息可在“catch”块中找到。
文档:http://msdn.microsoft.com/en-us/library/ms175976.aspx
示例:http://blog.sqlauthority.com/2007/04/11/sql-server-2005-explanation-of-trycatch-and-error-handling/