通过


如何:调试数据库对象

SQL Server 单元测试包括:

  • 用 C# 或 Visual Basic 编写的单元测试代码。 此代码由 SQL Server 单元测试设计器生成,负责提交构成测试正文的 Transact-SQL 脚本。

  • 用 C# 或 Visual Basic 编写的一个或多个测试条件。 若要调试测试条件,请按照《如何:测试运行时进行调试(Visual Studio 2010)》或《如何:测试运行时进行调试(Visual Studio 2012)》中所述的调试单元测试的过程进行操作。

  • 在要测试的数据库中的对象上运行的一个或多个 Transact-SQL 脚本。 无法调试这些 Transact-SQL 脚本。

本文中的过程介绍如何调试特定数据库对象,例如要测试的数据库中的存储过程、函数和触发器。 若要调试数据库对象,请按以下顺序执行以下过程:

  1. 在测试项目上启用 SQL Server 调试。
  2. 在托管要测试的数据库的 SQL Server 实例上启用应用程序调试。
  3. 在要调试的数据库对象的 Transact-SQL 脚本中设置断点。
  4. 调试单元测试。 在此过程中,在调试模式下运行测试。

在测试项目上启用 SQL 调试

  1. 打开 解决方案资源管理器

  2. 解决方案资源管理器中,右键单击测试项目,然后选择 “属性”。

    一个与测试项目同名的属性页打开了。

  3. 在属性页上,选择“ 调试”。

  4. “启用调试器”下,选择“ 启用 SQL Server 调试”。

  5. 保存更改。

设置增加的执行上下文超时,以便为测试项目启用调试

  1. “文件 ”菜单上,指向 “打开”,然后选择“ 文件”。

  2. 浏览到包含测试项目的文件夹,然后双击 app.config 该文件。

    该文件 app.config 将在编辑器中打开。

  3. 修改ExecutionContext节点以添加一个命令超时,如以下示例所示:

    <ExecutionContext
        CommandTimeout ="300" Provider="System.Data.SqlClient"
        ConnectionString="Data Source=TargetServerName\TargetInstanceName;Initial Catalog=TargetDatabaseName;Integrated Security=True;Pooling=False" />
    
  4. 保存更改。

  5. 重新生成单元测试项目。

重要

如果不重新生成项目,则运行单元测试时不会应用对 app.config 所做更改,调试失败。

将断点添加到 Transact-SQL 脚本

  1. “视图 ”菜单上,打开 SQL Server 对象资源管理器

  2. “数据连接”下,展开要测试的数据库节点。

  3. 如果数据库图标旁边显示一个小红色的“x”,则与数据库的连接将关闭。 在这种情况下,右键单击数据库,然后选择“ 刷新”。 可能需要提供凭据才能打开与数据库的连接。

  4. 展开 “视图”、“ 存储过程”或 “函数 ”节点以查找要调试的对象。

  5. 双击要调试的对象。

  6. 选择灰色边栏以设置断点。

调试 SQL Server 单元测试

  1. Visual Studio 2010,打开“测试>Windows测试视图 窗口。 在 Visual Studio 2012 中,打开 “测试资源管理器” 窗口。

  2. 右键单击包含用于操作数据库对象的 Transact-SQL 脚本的测试项目,在其中设置断点,然后选择 “调试选择”

    测试在调试模式下运行,直到遇到数据库对象中的断点。

  3. (可选)若要打开另一个调试窗口,请打开 “调试 ”菜单,指向 Windows,然后选择“ 断点”、“ 输出”或“ 即时”。