如何:使用 SQL Server 数据库项目或服务器项目进行调试

http://technet.microsoft.com/zh-cn/magazine/ms165040(VS.100).aspx

下面的过程描述如何使用 Visual StudioSQL Server 数据库项目或服务器项目类型来调试 Transact-SQL。有关在 C++、Visual Basic 或 C# 项目中调试 Transact-SQL 的信息,请参见调试多层数据库应用程序

在 SQL Server 数据库项目或服务器项目的上下文中,每当启动调试时,调试器将始终在活动的 Transact-SQL 查询窗口中开始调试 Transact-SQL 代码。如果不希望调试整个脚本,请于开始调试之前仅在查询窗口中突出显示 Transact-SQL 代码的子集。

若要调试存储过程和触发器这样的数据库对象,则需要在活动的 Transact-SQL 查询窗口中从 Transact-SQL 代码进入并单步执行这些对象。例如,如果希望调试存储过程:在调用该存储过程的EXECUTE语句上设置断点,在相同的 Transact-SQL 查询窗口上启动调试,然后通过单击“调试”工具栏上的“单步执行”来单步执行该存储过程。

注意注意

当使用 SQL Server 数据库或服务器项目时,Visual Studio 调试器不识别已通过服务器资源管理器设置的数据库对象上的断点。

在活动的 Transact-SQL 查询窗口中调试 Transact-SQL 脚本

  1. 确认已针对 Transact-SQL 调试设置了计算机。有关更多信息,请参见如何:启用 Transact-SQL 调试

  2. 启动 Visual Studio,并创建新的 SQL Server 数据库项目或服务器项目。

  3. 打开要用于开始调试的 Transact-SQL 脚本。还可以打开与当前项目关联或不关联的新 .sql 文件。

    1. 将新的 Transact-SQL 脚本添加到项目中:在解决方案资源管理器中右击项目名称,单击“添加”,再单击“新建项”“添加新项”对话框中,选择“脚本”(位于“数据库项目”节点下的“用户脚本”模板中)。然后单击“添加”

    2. 若要打开与项目没有关联的新 Transact-SQL 查询窗口,请参见如何:启动 Transact-SQL 编辑器如何:连接到 Transact-SQL 编辑器中的数据库注意:如果没有首先打开 SQL Server 数据库项目或服务器项目,则不能调试 Transact-SQL。

  4. 打开 Transact-SQL 查询窗口之后,开始编写 Transact-SQL 代码(如果尚未编写)。在准备开始调试后,继续下一个步骤。

  5. 在 Transact-SQL 代码中放置断点,方法是在 Transact-SQL 查询窗口的左空白处单击要中断执行的代码行。

  6. 通过按 F5 或打开“调试”菜单并单击“启动调试”,启动调试活动的 Transact-SQL 查询窗口。

  7. 使用“调试”工具栏上的“单步执行”“逐过程”“跳出”按钮,在 Transact-SQL 脚本中导航调试器。还可以按 F5 继续执行,直到出现下一个断点或脚本结束。

  8. 使用“局部变量”“监视”窗口检查代码的状态。有关更多信息,请参见使用局部变量窗口和监视窗口调试 Transact-SQL 对象

  9. 当完成并准备停止调试时,请按 Ctrl+Alt+Break,或者单击“调试”工具栏上的“停止调试”

调试已部署到服务器上的 Transact-SQL 数据库对象

  1. 确认已针对 Transact-SQL 调试设置了计算机。有关更多信息,请参见如何:启用 Transact-SQL 调试

  2. 启动 Visual Studio,并创建新的 SQL Server 数据库项目或服务器项目。

  3. 打开要用于测试 Transact-SQL 数据库对象的 Transact-SQL 脚本。还可以打开与当前项目关联或不关联的新 .sql 文件。

    1. 将新的 Transact-SQL 脚本添加到项目中:在解决方案资源管理器中右击项目名称,单击“添加”,再单击“新建项”“添加新项”对话框中,选择“脚本”(位于“数据库项目”节点下的“用户脚本”模板中)。然后单击“添加”

    2. 若要打开与项目没有关联的新 Transact-SQL 查询窗口,请参见如何:启动 Transact-SQL 编辑器如何:连接到 Transact-SQL 编辑器中的数据库注意:如果没有首先打开 SQL Server 数据库项目或服务器项目,则不能调试 Transact-SQL。

  4. 打开 Transact-SQL 查询窗口之后,开始编写 Transact-SQL 测试代码(如果尚未编写)。调试 Transact-SQL 数据库对象的唯一方法是在活动的 Transact-SQL 查询窗口中单步执行它们。在会导致执行 Transact-SQL 的测试脚本中编写 Transact-SQL 代码。

    1. 若要调试存储过程,请向使用相应存储过程的测试脚本添加

      EXECUTE

      语句。

    2. 若要调试触发器、用户定义的函数和其他可编程的 Transact-SQL 数据库对象,请在会导致代码执行的测试脚本中编写 Transact-SQL 代码。

  5. 在 Transact-SQL 测试脚本中放置断点,方法是在 Transact-SQL 查询窗口的左空白处单击要中断执行的代码行。若要调试已部署到 SQL Server 实例的 Transact-SQL 数据库对象,请将断点放置在会导致执行这些对象的 Transact-SQL 代码之前。

  6. 在启动调试器之前,请单击 Transact-SQL 测试脚本,以确保它在 Visual Studio 中是活动的窗口。

  7. 通过按 F5 或打开“调试”菜单并单击“启动调试”,开始调试 Transact-SQL 测试脚本。

  8. 当调试器在断点处中断执行后,按 F8 或打开“调试”菜单并单击“单步执行”,以在 Transact-SQL 数据库对象的 Transact-SQL 代码中单步执行调试器。调试器单步执行数据库对象的 Transact-SQL 代码后,Visual Studio 将立即打开 Transact-SQL 查询窗口来显示相应的 Transact-SQL 代码。

  9. 调试器单步执行 Transact-SQL 数据库对象后,即可设置其他断点,并使用“调试”工具栏上的“单步执行”“逐过程”“跳出”按钮在 Transact-SQL 代码中导航调试器。还可以按 F5 继续执行,直到出现下一个断点或代码结束。

  10. 使用“局部变量”“监视”窗口检查代码的状态。有关更多信息,请参见使用局部变量窗口和监视窗口调试 Transact-SQL 对象

  11. 当完成并准备停止调试时,请按 Ctrl+Alt+Break,或者单击“调试”工具栏上的“停止调试”

如何:启用 Transact-SQL 调试

  1. 使用 Visual Studio 的 Transact-SQL 调试需要一个 SQL Server 数据库服务器、从 SQL Server 2005 开始并设置适当的 权限。如果对应的 SQL Server 实例正在其他计算机上运行,则还需要在两台计算机上都配置 Windows 防火墙。

    注意 不支持使用 SQL Server 2000 或更早版本来调试 Transact-SQL。

    还可以使用 Visual Studio 调试 SQL CLR 代码(即使用托管代码的数据库对象)。若要对远程数据库服务器调试 SQL CLR,则必须在运行 SQL Server 实例的计算机上安装远程调试监视器。有关更多信息,请参见如何:设置远程调试调试使用托管代码的数据库对象(SQL CLR 调试)

    有关使用 SQL Server Management Studio 调试 Transact-SQL 的更多信息,请参见使用 Transact-SQL 调试器(可能为英文网页)。

    准备对 SQL Server 实例的 SQL Server 权限

    1. 将应用程序帐户添加到 SQL Serversysadmin 固定服务器角色。应用程序帐户是用来运行 Visual Studio 的 Windows 帐户。为此,请使用同样是 sysadmin 成员的登录名执行下面的 Transact-SQL 语句,其中Domain\Name表示 Windows 帐户登录名:sp_addsrvrolemember 'Domain\Name', 'sysadmin'

    2. 将连接帐户添加到 SQL Server sysadmin 固定服务器角色。连接帐户是 Transact-SQL 代码用于连接到 SQL Server 实例的 Windows 登录名或 SQL Server 登录名。为此,请使用同样是 sysadmin 成员的登录名执行下面的 Transact-SQL 语句,其中Domain\Name表示相应的帐户:sp_addsrvrolemember 'Domain\Name', 'sysadmin'

    注意注意

    我们建议在测试服务器上调试 Transact-SQL 代码,而不要在生产服务器上调试,其原因如下:调试是对权限要求很高的操作。因此,只允许 sysadmin 固定服务器角色的成员在 SQL Server 中进行调试。当您调查多个 Transact-SQL 语句的运行时,调试会话通常会运行很长时间。会话所获取的锁(如更新锁)可能会持有很长时间,直到结束会话或者提交或回滚事务。

    准备 Windows 防火墙进行远程调试(当 SQL Server 在另一台计算机上运行时)

    1. 在运行 Visual Studio 的计算机上,必须将下列项添加到 Windows 防火墙例外列表中:

      1. Visual Studio 程序Devenv.exe

      2. TCP 端口 135

    2. 在运行 SQL Server 实例的计算机上,必须将下列项添加到 Windows 防火墙例外列表中:

      1. SQL Server 程序sqlservr.exe默认情况下,sqlservr.exe安装在 C:\Program Files\Microsoft SQL Server\MSSQL10.InstanceName\MSSQL\Binn 中,其中InstanceName 对于默认实例为 MSSQLSERVER,而对于任何命名实例为实例名称。

      2. TCP 端口 135

      3. 如果您的域策略要求通过 IPSec 进行网络通信,还必须打开 UDP 4500 和 UDP 500 端口。

     

     

     

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值