运行 Transact-SQL 调试程序
适用范围:SQL Server
可以在打开数据库引擎查询编辑器窗口后启动 Transact-SQL 调试器。 可以设置选项以自定义调试程序在调试模式下运行和运行 Transact-SQL 代码的方式,直到你停止调试程序。
启动和停止调试器
启动 Transact-SQL 调试器的要求如下:
如果数据库引擎查询编辑器连接到其他计算机上的数据库引擎实例,则必须配置调试程序进行远程调试。 有关详细信息,请参阅运行 Transact-SQL 调试器之前配置防火墙规则。
数据库引擎查询编辑器窗口必须使用 Windows 身份验证来连接,或使用作为 sysadmin 固定服务器角色成员的 SQL Server 身份验证登录名来连接。
数据库引擎查询编辑器窗口必须连接到 SQL Server 数据库引擎的实例。 如果查询编辑器窗口连接到处于单用户模式下的实例,将无法运行调试器。
我们建议在测试服务器上调试 Transact-SQL 代码,而不要在生产服务器上调试,原因如下:
调试是一项需要高特权的操作。 因此只允许 sysadmin 固定服务器角色成员在 SQL Server 中进行调试。
在调查多个 Transact-SQL 语句的运行时,调试会话通常会运行很长时间。 会话获取的锁(如更新锁)可能会持有很长时间,直到终止会话或者提交或回滚事务。
启动 Transact-SQL 调试器可将查询编辑器窗口置于调试模式。 在查询编辑器窗口进入调试模式时,调试器会在第一个代码行处暂停。 然后,可以单步执行代码,在特定 Transact-SQL 语句上暂停执行,并使用调试器窗口来查看当前执行状态。 可以通过在“查询”工具栏上选择“调试”按钮,或在“调试”菜单上选择“启动调试”来启动调试程序。
查询编辑器窗口会保持在调试模式下,直到查询编辑器窗口中的最后一个语句完成或您停止调试模式。 可以使用以下任何一种方法来停止调试模式和语句执行:
在“调试”菜单中,选择“停止调试”。
在“调试”工具栏上,选择“停止调试”按钮。
在“查询”菜单上,选择“取消执行查询”。
在“查询”工具栏上,选择“取消执行查询”按钮。
也可在“调试”菜单上选择“全部分离”,以停止调试模式,但允许剩余的 Transact-SQL 语句完成执行。
控制调试程序
可以使用以下命令、工具栏和快捷方式控制 Transact-SQL 调试器的运行方式:
“调试”菜单和“调试”工具栏。 在焦点放到打开的查询编辑器窗口中之前,“调试”菜单和“调试”工具栏处于不活动状态。 它们将保持活动状态,直到关闭当前项目。
调试器键盘快捷键。
查询编辑器快捷菜单。 当右键单击查询编辑器窗口中的某一行时,会显示快捷菜单。 当查询编辑器窗口处于调试模式时,快捷菜单会显示适用于所选的行或字符串的调试器命令。
调试器打开的窗口中的菜单项和上下文命令,例如“监视”或“断点”。
下表显示了调试器菜单命令、工具栏按钮和键盘快捷键。
调试菜单命令 | 编辑器快捷方式命令 | 工具栏按钮 | 键盘快捷键 | 操作 |
---|---|---|---|---|
窗口/断点 | 不可用 | “断点” | Ctrl+Alt+B | 显示“断点”窗口,您可在其中查看和管理断点。 |
窗口/监视/监视 1 | 不可用 | 断点/监视/监视1 | CTRL+ALT+W, 1 | 显示“监视1”窗口。 |
窗口/监视/监视2 | 不可用 | 断点/监视/监视2 | CTRL+ALT+W, 2 | 显示“监视2”窗口。 |
窗口/监视/监视3 | 不可用 | 断点/监视/监视3 | CTRL+ALT+W, 3 | 显示“监视3”窗口。 |
窗口/监视/监视4 | 不可用 | 断点/监视/监视4 | Ctrl+Alt+W,4 | 显示“监视4”窗口。 |
窗口/局部变量 | 不可用 | 断点/局部变量 | Ctrl+Alt+V,L | 显示“局部变量”窗口。 |
窗口/调用堆栈 | 不可用 | 断点/调用堆栈 | Ctrl+Alt+C | 显示“调用堆栈”窗口。 |
窗口/线程 | 不可用 | 断点/线程 | Ctrl+Alt+H | 显示“线程”窗口。 |
继续 | 不可用 | 继续 | Alt+F5 | 运行到下一个断点。 在将焦点放在处于调试模式的查询编辑器窗口上之前,“继续”处于不活动状态。 |
“调试” | 不可用 | “调试” | Alt+F5 | 将查询编辑器窗口置于调试模式,并运行到第一个断点。 如果将焦点放在处于调试模式的查询编辑器窗口上,则“启动调试”将由“继续”替代。 |
全部中断 | 不可用 | 全部中断 | Ctrl+Alt+Break | Transact-SQL 调试器未使用此功能。 |
停止调试 | 不可用 | 停止调试 | Shift+F5 | 使查询编辑器窗口脱离调试模式,并将其恢复到常规模式。 |
菜单上单击 | 不可用 | 不可用 | 不可用 | 停止调试模式,但在查询编辑器窗口中执行剩余的语句。 |
步入 | 不可用 | 步入 | F11 | 运行下一个语句,如果下一个语句运行存储过程、触发器或函数,还将打开处于调试模式的新查询编辑器窗口。 |
步越 | 不可用 | 步越 | F10 | 与 “逐语句” 相同,只不过它不会调试函数、存储过程或触发器。 |
步出 | 不可用 | 步出 | SHIFT+F11 | 执行触发器、函数或存储过程中的剩余代码,而不在任何断点处暂停。 当控件返回到调用该模块的代码时,常规调试模式恢复。 |
不可用 | 运行至光标处 | 不可用 | Ctrl+F10 | 从上次停止位置开始执行所有代码,一直到当前光标位置,在断点处不停止。 |
快速监视 | 快速监视 | 不可用 | Ctrl+Alt+Q | 显示“快速监视”窗口。 |
切换断点 | 断点/插入断点 | 不可用 | F9 | 在当前或选定的 Transact-SQL 语句上设置一个断点。 |
不可用 | 断点/删除断点 | 不可用 | 不可用 | 从选定行上删除断点。 |
不可用 | 断点/禁用断点 | 不可用 | 不可用 | 禁用选定行上的断点。 断点在代码行中保留,但不会停止执行,直到重新启用断点。 |
不可用 | 断点/启用断点 | 不可用 | 不可用 | 启用选定行上的断点。 |
删除全部断点 | 不可用 | 不可用 | CTRL+SHIFT+F9 | 删除所有断点。 |
禁用所有断点 | 不可用 | 不可用 | 不可用 | 禁用所有断点。 |
不可用 | 添加监视 | 不可用 | 不可用 | 将选定的表达式添加到“监视”窗口中。 |