VS上报出SqlException
在系统上做一操作,需要在数据库上操作,但报出SqlException。如下图
在下方的自动窗口中,可以找到当前执行的存储过程名称,以及执行这个存储过程所使用的参数的值。
从上图可以看到,这个存储过程的名字是”SP_COM_APPLYAPPLICATION”。此时四个参数的值如下:
@APPLYID : SQZL062016042000000003
@APPLYTYPEID : SQZL06
@COMPANYID : DSC001
@USERID : DSC0010023
追踪存储过程的执行过程
打开SQL Server 2014,假设数据库叫DB,在DB -> 可编程性 -> 存储过程,找到“SP_COM_APPLYAPPLICATION”这个存储过程。右键选择“执行存储过程”:
将上面记录的四个参数,分别填入“值”中。执行。这时会自动生成一个查询:
执行的结果,返回0。我们在EXEC这条语句上设置断点。然后调试,它开始执行第一条语句:
按F10可以执行当前查询的下一条语句,按F11的话,如果可以进入内层代码的执行,就会进去,所以我们就按F11就行,因为我们想要搞清楚EXEC在存储过程里的执行情况。执行到EXEC时,继续按F11,进入存储过程的执行:
自动跳转到存储过程,我们在这里继续按F11,就能看到它是从上图的条件语句中返回的,错误就出在这里。(能看到这条出错的执行语句)继续按F11,就会返回到我们的查询,追踪结束。
另外,如果数据库一直处在“(还原中…)”的状态,可以简单地这样处理:右键数据库 -> 策略 -> 删除运行状态。这样,这个数据库就能展开了。
当在VS中遇到SqlException时,可以通过查看自动窗口获取执行的存储过程名和参数值。在SQL Server 2014中找到对应存储过程,模拟执行并设置断点进行调试。通过F11逐行执行,定位到错误的执行语句,从而解决问题。如果数据库处于还原状态,可以使用策略删除运行状态恢复正常。
2604

被折叠的 条评论
为什么被折叠?



