如何使用VS.NET调试数据库存储过程 longrujun [原作]
VS.NET可以利用诸如C#以及VB.NET等语言,开发基于.NET架构的应用程序,同时也可以用来编写CSS(层叠样式表)、HTML、XML以及SQL。其中针对SQL的功能是经常被我们忽视的内容,下面我就详细讲解一下VS.NET是如何与SQL协同工作的。
数据库连接
VS.NET的Server Explorer可以非常方便的实现与数据库服务器的连接工作。虽然这种连接不仅限于SQL Server。图A显示的是VS.NET工作区右面的Server Explorer面板。你可以通过View下拉菜单找到该对象,或者在工作区右边点击选项卡来显示Server Explorer。在Server Explorer中右键点击Data Connections,会出现连接到新数据库的选项。图B是连接对话框。其中Test Connection按钮可以方便的测试数据库的可连接性和连接正确性。
![](http://www.cntele.com/pic/solu/040423202.jpg)
图A:Visual Studio .NET的Server Explorer
![](http://www.cntele.com/pic/solu/040423203.gif)
图B:通过Server Explorer添加一个新的数据库连接
一旦在Server Explorer中添加了连接,它就会出现在Server Explorer的服务器节点中。同时服务器名称和相关选项也会出现在下方。SQL Servers节点可以提供程序访问SQL Server以及其中的数据元素的能力。现在,你差不多已经可以开始调试SQL代码了,不过在这之前还要进行一些设置。
SQL Server设置
SQL Server包含了一种扩展的存储过程,可以用它来控制调试存储过程的访问能力。这个存储过程叫做sp_sdidebug,下面的T-SQL代码可以用来允许一个用户对存储过程进行调试:
USE Master
GRANT EXECUTE
ON sp_sdidebug
TO username
另外,用户必须具备访问数据库和存储过程的权限。一旦做好相关的设置,用户就可以开始真正的调试过程了。实际上,调试过程很简单,只需要在VS.NET的Server Explorer中右键点击存储过程,并选择Step Into Stored Procedure。图C 是一个使用Northwind数据库进行存储过程调试的例子。在这个例子中,存储过程会从数据库中返回十个价格最高的产品。
![](http://www.cntele.com/pic/solu/040423204.gif)
图C:通过Server Explorer调试存储过程
当调试过程开始后,就跟日常调试C#或VB.NET代码没什么不同了。图D是刚才的存储过程在调试模式下的视图。相应的选项可以通过Debug下拉菜单或者快捷键来实现。以下是几个与调试相关的快捷键:
F5:继续
Shift + F5:停止调试
F11:单步进入
F10: 单步跳过
Shift + F11: 单步跳出
![](http://www.cntele.com/pic/solu/040423205.jpg)
图D:调试模式下的存储过程
另外,可以加入断点和查看点,以监视调试过程。在VS.NET工作区的下方,可以看到调试过程的输出结果。图E 显示了对存储过程进行调试后的VS.NET工作区。从图上我们能看到调试信息:存储过程运行的返回值是0,这表示运行成功。
![](http://www.cntele.com/pic/solu/040423206.jpg)
图E:运行存储过程后的调试信息
我们也可以按照图F所示,从调试窗口上的下拉菜单中选择Database Output来显示输出结果。实际的输出和图F差不多。
![](http://www.cntele.com/pic/solu/040423207.jpg)
图F:查看存储过程的输出结果
参数
现实中的存储过程要比我们的例子复杂的多。大部分实际应用的存储过程都可以接受或返回一个或多个参数。用VS.NET的调试器对其调试也非常简单,你可以看到添加不同参数后的代码运行效果。对需要输入参数的存储过程进行调试时,会有一个窗口弹出用来接受参数。
图G是接收参数的对话框。本例中我选择的是需要输入起始和中止时间的存储过程(年度销售量),它会返回在该时间段内的销售总量。另外,在所输入的参数中,也可以选择NULL或DEFAULT,这可以检查在空值和默认值情况下,存储过程是否会出现问题。
![](http://www.cntele.com/pic/solu/040423208.gif)
图G:带参数的调试过程
总结
VS.NET对存储过程进行开发、维护和调试的能力,使它完全代替了其它诸如SQL Server的Query Analyzer的工作。
数据库连接
VS.NET的Server Explorer可以非常方便的实现与数据库服务器的连接工作。虽然这种连接不仅限于SQL Server。图A显示的是VS.NET工作区右面的Server Explorer面板。你可以通过View下拉菜单找到该对象,或者在工作区右边点击选项卡来显示Server Explorer。在Server Explorer中右键点击Data Connections,会出现连接到新数据库的选项。图B是连接对话框。其中Test Connection按钮可以方便的测试数据库的可连接性和连接正确性。
![](http://www.cntele.com/pic/solu/040423202.jpg)
图A:Visual Studio .NET的Server Explorer
![](http://www.cntele.com/pic/solu/040423203.gif)
图B:通过Server Explorer添加一个新的数据库连接
一旦在Server Explorer中添加了连接,它就会出现在Server Explorer的服务器节点中。同时服务器名称和相关选项也会出现在下方。SQL Servers节点可以提供程序访问SQL Server以及其中的数据元素的能力。现在,你差不多已经可以开始调试SQL代码了,不过在这之前还要进行一些设置。
SQL Server设置
SQL Server包含了一种扩展的存储过程,可以用它来控制调试存储过程的访问能力。这个存储过程叫做sp_sdidebug,下面的T-SQL代码可以用来允许一个用户对存储过程进行调试:
USE Master
GRANT EXECUTE
ON sp_sdidebug
TO username
另外,用户必须具备访问数据库和存储过程的权限。一旦做好相关的设置,用户就可以开始真正的调试过程了。实际上,调试过程很简单,只需要在VS.NET的Server Explorer中右键点击存储过程,并选择Step Into Stored Procedure。图C 是一个使用Northwind数据库进行存储过程调试的例子。在这个例子中,存储过程会从数据库中返回十个价格最高的产品。
![](http://www.cntele.com/pic/solu/040423204.gif)
图C:通过Server Explorer调试存储过程
当调试过程开始后,就跟日常调试C#或VB.NET代码没什么不同了。图D是刚才的存储过程在调试模式下的视图。相应的选项可以通过Debug下拉菜单或者快捷键来实现。以下是几个与调试相关的快捷键:
F5:继续
Shift + F5:停止调试
F11:单步进入
F10: 单步跳过
Shift + F11: 单步跳出
![](http://www.cntele.com/pic/solu/040423205.jpg)
图D:调试模式下的存储过程
另外,可以加入断点和查看点,以监视调试过程。在VS.NET工作区的下方,可以看到调试过程的输出结果。图E 显示了对存储过程进行调试后的VS.NET工作区。从图上我们能看到调试信息:存储过程运行的返回值是0,这表示运行成功。
![](http://www.cntele.com/pic/solu/040423206.jpg)
图E:运行存储过程后的调试信息
我们也可以按照图F所示,从调试窗口上的下拉菜单中选择Database Output来显示输出结果。实际的输出和图F差不多。
![](http://www.cntele.com/pic/solu/040423207.jpg)
图F:查看存储过程的输出结果
参数
现实中的存储过程要比我们的例子复杂的多。大部分实际应用的存储过程都可以接受或返回一个或多个参数。用VS.NET的调试器对其调试也非常简单,你可以看到添加不同参数后的代码运行效果。对需要输入参数的存储过程进行调试时,会有一个窗口弹出用来接受参数。
图G是接收参数的对话框。本例中我选择的是需要输入起始和中止时间的存储过程(年度销售量),它会返回在该时间段内的销售总量。另外,在所输入的参数中,也可以选择NULL或DEFAULT,这可以检查在空值和默认值情况下,存储过程是否会出现问题。
![](http://www.cntele.com/pic/solu/040423208.gif)
图G:带参数的调试过程
总结
VS.NET对存储过程进行开发、维护和调试的能力,使它完全代替了其它诸如SQL Server的Query Analyzer的工作。