调试器命令和功能的限制

本主题适用于:

Visual Studio 旗舰版

Visual Studio 高级专业版

Visual Studio 专业版

Visual Studio 速成版

ms165035.DoesApplybmp(zh-cn,VS.100).gif ms165035.DoesApplybmp(zh-cn,VS.100).gif ms165035.DoesApplybmp(zh-cn,VS.100).gif ms165035.DoesNotApplybmp(zh-cn,VS.100).gif

Visual Studio Transact-SQL 调试器提供了很多常见的调试功能,但并非所有常见的调试功能。Transact-SQL 调试支持大多数调试器命令,如设置断点和单步执行。可以在**“局部变量”窗口中查看变量值和传递的参数值。当逐句通过或运行过程时,还可以将表达式拖动到“监视”**窗口中以跟踪它们。

然而,鉴于 SQL Server 本身的一些基本特征,Transact-SQL 调试发生的环境与其他调试发生的环境有很大的差异。这种差异导致 Transact-SQL 调试存在着某些限制。

通过 SQL Server 调试时的一般限制

  • 不能使用**“编辑”“继续”**。

  • 不能在**“调用堆栈”窗口中使用“运行至光标处”**。

  • 不能在处理 Transact-SQL 语句的同时使用**“中断”**。

  • SQL PRINT 语句的输出不显示在调试器中或**“数据库输出”**窗格中。

  • 不能在 Visual Studio 中使用**“AutoRollback”**。如果再现更改数据的 bug,则可能会因数据发生更改而丢失该 bug。

  • 许多窗口不可用,或者未提供任何功能。它们是:

    • 内存

    • 寄存器

    • Transact-SQL 的反汇编

Transact-SQL 调试限制

  • 不支持断点条件和筛选器。

  • 由于 SQL Server 没有真正的内存或寄存器,所以不能使用**“内存”窗口或“寄存器”**窗口。

  • 不能使用**“设置下一语句”**更改执行序列。必须遵循 Transact-SQL 代码中的流控制顺序和语句顺序。作为对此限制的一种解决方法,可以将控制语句放在 Transact-SQL 代码块周围,并更改变量的值。

  • 不能从 Transact-SQL 对象内部访问任何 .NET Framework 变量或属性。

  • 可以显示**“即时”**窗口,但不能用它执行任何有用的操作,例如为变量赋值和查询数据库。

  • 许多窗口不可用,或者未提供任何功能。它们是:

    • 反汇编

    • 线程

    • 寄存器

    • 进程

    • 模块

请参阅

概念

Transact-SQL 调试限制

调试 Transact-SQL