木子屋 Dnawo's BLOG

SQL Server2000存储过程调试

👤 dnawo 📅 2008-07-31 👁 7453 👍 0 💬 0 🔄 来源:本站原创
今天写了个存储过程,在查询分析器中测试报错:

图片

这样的错误信息根本看不出错在哪边,只能用单步执行来追踪了。在查询分析器对象浏览器中找到要调试的存储过程,右键点击选择调试:

图片

输入各个参数的值后开始调试(钩选自动回滚调试完毕后将回滚操作):

图片

按F11单步执行:

图片

终于找到错误的位置了:

图片

图片

修改存储过程,输出@strSQL的值,才发现原来是声明的时候设置@strSQL的长度为300,而拼接的SQL语句太长了,长出的部分被截断才导致出错,OK,将@strSQL长度增加,问题解决!

说明:如果在存储过程中有SET NOCOUNT ON语句,在调试过程中应注释掉,在本次调试过程中发现有SET NOCOUNT ON调试器遇错会继续执行,也不报错!

在SQL Server联机丛书中说明:建议不要在生成服务器上使用 Transact-SQL 调试程序。在步骤执行模式下,调试程序会锁定其它进程所需的某些系统资源。

2008-07-31补充:

晚上在家里运行调试器失败,提示:
服务器: 消息 508,级别 16,状态 1,过程 sp_sdidebug,行 1
[Microsoft][ODBC SQL Server Driver][SQL Server]无法连接到 LF-CBIXQUB2CZ5G 上的调试程序(错误 = 0x800401f3)。请确保已在 LF-CBIXQUB2CZ5G 上安装并注册了客户端组件(如 SQLLE.DLL)。已禁用对 52 的调试。

百度了下,大都是说将MSSQLSERVER服务的登录方式设置为一个windows帐户或是将VS2003/2005安装目录中的sqlserver\mssdi98.dll覆盖掉SQL Server2000安装目录中的Binn\mssdi98.dll,我试了均不成功,最终在一篇文章中看到说是SQL Server2000版本的问题,尝试着将本机的8.00.194(RTM)升到8.00.2039(SP4),问题得以解决。

Microsoft SQL Server 2000 sp4下载:http://www.crsky.com/soft/5814.html

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 Repeater中实现CheckBox的全选/反选/取消 下一篇 → 在游标中使用动态SQL(SQL Server2000)