[翻译]在Visual Studio 2005中调试SQL Server 2005的存储过程
[2] [翻译]在Visual Studio 2005中调试SQL Server 2005的存储过程
[3] [翻译]在Visual Studio 2005中调试SQL Server 2005的存储过程
介绍
SQL Server 2000可以让我们在查询分析器中直接调试存储过程(更多的信息请参看:用SQL
Server 2000的查询分析器调试存储过程) 到了现在的SQL Server 2005,这个功能被转移到了SQL Servr Management
Studio和Visual Studio IDE内。 使用这个技术,我们可以在Visual Studio中一步一步地调试存储过程。
而且你也可以在存储过程中设置断点,这样当你调试你的程序时,这些断点就会生效。
SQL Server
2005的所有版本都支持调试功能(包括Express版)。 但是,只有Team Systems和Professional版本的Visual
Studio才能在IDE内调试存储过程。 简而言之,如果你使用的是Visual Web Developer或者Visual Studio
Standard版本的话,就不能在调试应用程序的时候,一步一步地调试存储过程或者进入到存储过程内部。
本文中,我将示例如何通过Visual
Studio IDE调试SQL Server 2005的存储过程。
我们既会看到如何在IDE中直接一步一步地调试存储过程,也会看到如何给存储过程设置断点,并在调试应用程序的时候进入到断点处。
继续往下看,你会知道得更多!
SQL Server调试的不同方法
现在的SQL Server
2005中,所有的数据库调试都发生在Visual Studio IDE的内部。
数据库中的像存储过程、触发器和用户自定义函数(UDFs)这样的对象都是可以被调试的(译者注:本文中提到的数据库对象指的是存储过程、触发器或用户自定义函数)。
Visual Studio提供了3种调试这些数据库对象的方法。
数据库中直接调试 – 在Visual
Studio的服务器资源管理器中,右键单击某个数据库对象,然后选择“单步执行××”。
例如,当你右键单击一个存储过程的时候,弹出菜单中就会包含一个“单步执行存储过程”的选项。
应用程序调试 –
在数据库对象内设置断点,然后通过应用程序进行调试。 当相关的ASP.NET程序处于调试状态,并且调用了数据库对象的时候,那么Visual
Studio就会暂停在你所设置的断点之处,从而允许我们一步一步地对T-SQL语句进行调试。
在SQL Server项目中调试 –
在Visual Studio中可以创建一个SQL Server项目。 该项目中可以包含T-SQL和数据库对象,并且这些数据库对象都可以通过SQL
Server项目本身来调试。
关于这3种不同的SQL Server调试的更多信息,请参看:Overview of T-SQL and CLR Debugging in SQL Server
2005。
还有一个需要注意的地方就是,本文接下来所介绍的SQL Server调试是基于本地数据库的。
当然,无论是本地数据库还是远程数据库都是可以调试的。 本地数据库指的是数据库部署在本机上;远程数据库指的是数据库部署在本机之外的机器上。
调试本地数据库不需要做额外的设置,
但是调试远程数据库却要复杂得多。
本文主要介绍的是如何在数据库中直接调试,以及如何在ASP.NET程序中调试一个本地数据库。
详细点说就是,我们将调试App_Data文件夹下的SQL Server 2005 Express版本的数据库,你可以在本文的结尾处下载该数据库及示例程序。
在今后的其它文章中我们再研究如何在SQL Server项目中调试数据库。 接下来,我给大家简要讲一讲关于调试远程数据库的相关要点。
调试远程数据库
调试远程数据库最关键的要点在于,要确保启动Visual
Studio的Windows用户与连接远程数据库的用户是同一个用户。
此外,该用户必须隶属于sysadmin角色。
例如,你可以在Windows的域中创建一个名为“TestDebug”的用户。
然后使其可以登录到远程SQL Server数据库,并将该用户添加到sysadmin角色内。
另外,你还需要使用“TestDebug”用户来登录你的电脑,或者确保使用runas.exe命令启动的Visual
Studio运行在“TestDebug”用户下。 这样,你就可以使用我们接下来演示的方法来调试了。
更多的详细信息可以参看这本书:Hitchhiker's Guide to
Visual Studio and SQL Server, Seventh
Edition。
在数据库中直接调试
在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法。
在Visual
Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数。
本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库。
我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID。
这是一个没什么实用价值的存储过程,但是它有很多的T-SQL语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。