大多数开发人员都自豪地宣称他们编写的代码是没有错误的但是实际上我们都知道错误不论是逻辑上的还是物理上的都会发生在最好的项目里也就是说软件开发过程中最耗时间的任务之一就是调试我们都曾经追蹤过难以琢磨的错误因此大多数开发工具包都会包括调试工具用以帮助查找错误非常感谢微软从版开始就向SQL服务器环境里加入了这样一个工具让我们更加仔细地看看这个顺手的工具看在日常编程的工作中如何使用它
它在哪儿?
SQL的服务器调试界面(SDI)能够从查询分析器客户端进入找到查询分析器对象浏览器里的存储过程见图A再右击要操作的过程名称会弹出一个菜单菜单上有调试选项在你能够使用SDI以前SQL服务器管理员必须给你足够的访问权限所以要查一查确保你有这个权限
图A
查询分析器提供了存储过程调试选项
一旦选择了调试选项图B里的对话框会出现它能让你为存储过程提供任何所需要的参数一旦输入了参数点击OK按纽开始调试过程
图B
你可以为调试过程输入存储过程的参数
为了说明问题我选择了位于Northwind数据库里的SalesByCategory存储过程我加入了图B(@CategoryName=Beverages和@OrdYear=)里的参数就开始进行调试了你一次只能进行一个调试过程图C是允许你使用代码的调试窗
图C
调试界面
这个调试窗口一共有五个面板最大的显示框是主代码面板它显示着当前正在执行的存储过程的代码还包含有大量控制按钮(我会在后面谈到它们)紧挨在主显示框下面最左边的面板包含有局部变量包括传递给过程的参数和代码里声明的变量中间的面板包含有全局变量右边的面板是调用栈其中包含有执行过程的列表如果某个过程调用另一个过程这个调用栈就会扩展最底部的面板显示着正在运行的过程的输出结果不论是错误的结果还是所预期的结果注意图C例子里的被传递的值是在图B局部变量里输入的
执行控制
调试器的值是在执行待考察代码时它给你提供的自由例如你可以在存储过程中设置断点执行会在断点中断直到你让它继续执行在SDI里使用功能键(F)和选择主代码窗上面的按钮都可以设置断点和特性一共有十一个按钮我把它们列在了表A里
表A
SDI的调试命令
你可以利用这些按钮的优势来帮你进行调试过程它们能让你执行代码并查看变量的内容此外还可以用所需要的值对局部变量进行编辑和替换图D显示了输出面板里示例参数的结果
图D
存储过程的输出结果
SDI会拖累运行它的服务器的资源所以应该严格地将其使用限制到开发或者测试环境里你不能在调试过程中编辑代码
清理你的代码
SQL的服务器调试界面是对SQL开发人员任何工具集强有力的补充调试是必需的不论你是在使用自己的存储过程还是跳到另一个开发人员的程序里在你下一个项目里好好利用这个工具的优势吧