T-SQL 调试器

T-SQL 调试器是与数据环境设计器集成在一起的。它允许您在 Visual Basic 开发环境中,交互地调试用 Microsoft SQL Server 的 Transact SQL 特有语言写成的远程存储过程。使用 T-SQL 触发器,可以:

安装和兼容性

为了使用 T-SQL 调试器,必须安装 SQL Server 6.5 版的 Service Pack 3 或更高版本作为您的数据库服务器。调试器使用由 SQL Server 的 Sdi.dll 显露的功能,并且通过远程自动化显露出哪种功能。

如果您在安装 Visual Basic 时选择安装全部的企业版工具,则 T-SQL 调试器的客户端组件就正确地被安装和配置。如果有必要重复安装过程,则在 CD 的“安装”对话框中选择“自定义”,并且在选择企业版工具时选中“全选”。

服务器端安装

安装了 SQL Server 6.5 版 Service Pack 3 或更高版本之后,就可以在服务器上安装和注册 SQL 调试器接口和远端自动化部件了。这些部件位于 \Program files\Common Files\Microsoft Shared\SQL Debugging 目录下。在 Windows NT 4.0 环境下,仅需简单地运行安装程序 Sdi_nt4.exe 即可。

注意 为了在 NT Server 3.51 上安装,必须手工复制和注册所必须的文件。这个过程的完整指令包括在 Readme.txt 文件中,该文件位于 \Program Files\Common Files\Microsoft Shared\SQL Debugging 文件夹。

使用 T-SQL 调试器

可以使用不同的方法调用 T-SQL 调试。

  1. 要在设计时调试一个存储过程或者批查询,要通过位于 Visual Basic 中的“外接程序”菜单中的“外接程序管理器...”,添加 T-SQL 调试器外接程序。然后,可以“外接程序”菜单中单击“T-SQL 调试器”来启动该外接程序。然后简单地选择一个 DSN ,并且选择“存储过程”或者是“批 SQL”最后单击“执行”按钮。这样就调出了调试器,并且允许您对所感兴趣的 SQL 进行调试。

  2. 要在调试 Visual Basic 代码(运行时调试)时调试一个存储过程,可以在 Visual Basic 的“工具”菜单中选择“T-SQL 调试选项”。该选项对话框允许以下操作:

    一旦已经选择了“自动跟踪存储过程”复选框,如果单步运行 (F8) 到某一行代码,并且该行代码执行一个调用存储过程的 ADO 或者 RDO 方法,那么将自动启动调试器。然后,您就可以单步执行存储过程,然后继续对您的 Visual Basic 代码进行调试了。

    注意 如果在存储过程执行完成之前,已经返回了足够的数据来填满其缓冲区,那么 SQL Server 将从该存储过程返回。如果发生了这种情况,T-SQL 调试器和 Visual Basic 调试器将同时被激活。Visual Basic 代码必须在存储过程完成执行之前从 ADO 或者 RDO 取回结果。如果发生了这种情况,请确定您的代码通过使 Visual Basic 处于 Run 模式 (F5) 下以及在希望停止执行处设置断点来读取结果集。使用任务栏或 ALT+TAB 组合键,可以在 Visual Basic 和 T-SQL 调试器之间进行切换。

  3. 您还可以在下列情况下启动 T-SQL 调试器:

一旦已经启动了调试器,它将建立 ODBC 连接并且显示“输入未赋值的参数”对话框,如下图所示。

“Unassigned Parameters”对话框

在 Value 字段中为任何未赋值的参数输入数值,然后单击“确定”。T-SQL 调试器界面出现并且显示存储过程的文本。

T-SQL 调试器界面

调试选项

在显示 SQL 语句的同时,在工具栏按钮和“调试”菜单中还有多个可用的调试选项。这些选项包括:

视图和选项

除了包含正在调试的 SQL 语句的代码窗口之外,T-SQL 调试器界面还为局部和全局变量以及查询输出(结果集)显示分开的输出窗口。“视图”菜单也允许打开一个分开的“调用堆栈”窗口和一个“转储临时表”窗口,使得您可以在代码执行时对它们进行检查。

“选项...”菜单使您可以通过改变用于显示的字体和颜色来自定义 T-SQL 调试器的外观。

从 T-SQL 调试器中退出

调试会话完成之后,在“文件”菜单中单击“退出”关闭调试器。要再次执行一个查询,在“调试”菜单中单击“重新启动”。

疑难解答

如果不能使 T-SQL 调试正常工作,则需要检查服务器的事件日志。SDI.DLL 将在事件查看器的应用程序部分中记录事件。COM 或者分布式 COM 错误将在查看器的系统部分中记录事件。