Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET 2.0数据教程之七十四:调试存储过程

ASP.NET 2.0数据教程之七十四:调试存储过程2010-08-13 翻译:CSDN 王文涛返回“”

导言:

Visual Studio有很多的调试功能.我们只需要稍稍点点鼠标, 敲敲键盘就可以使用断点(breakpoints)来打断某个程序的执行,并查看其状态. 除了调试代码以外,Visual Studio也支持对SQL Server里面的存储过程进行调试 .就像可以在ASP.NET页面的后台代码类或Business Logic Layer class类里设置 断点一样,我们也可以在存储过程里设置断点.

本文我们将考察如何在 Visual Studio的Server Explorer里进入存储过程并设置断点.当ASP.NET程序调 用该存储过程时就会碰到该断点.

注意:

不幸的是只能在Visual Studio的Professional和Team Systems版本里才能对存储过程设置断点.如果你使 用的是Visual Web Developer或Visual Studio的标准版,你就只能看教程是如何 一步步的做的,但不能在自己的机器上实践.

SQL Server调试主题

Microsoft SQL Server 2005集合了公共语言运行库(Common Language Runtime (CLR)),它可以被所有.NET模块使用.因此SQL Server 2005支持对数据库 对象的管理.

我们可以创建数据库对象,比如存储过程、用户定义的函数 ((UDFs)等,就像在一个C#类里定义的方法一样.你可以在从.NET Framework或自 己定义的类里使用这些存储过程和自定义函数.当然,SQL Server 2005也支持T- SQL数据库对象.SQL Server 2005支持对T-SQL数据库对象以及管理数据库对象 (managed database objects)的调试.不过只能在Visual Studio 2005专业版或 Team Systems版本里才行.本文我们将考察对T-SQL数据库的调试.后面的教程我们 将考察对管理数据库对象的调试.文章《Overview of T-SQL and CLR Debugging in SQL Server 2005》 (http://blogs.msdn.com/sqlclr/archive/2006/06/29/651644.aspx)归纳了在 Visual Studio里调试SQL Server 2005对象的3种途径:

.直接数据库调试 (DDD)—在服务器资源管理器里进入某个T-SQL数据库对象,比如存储过程或 用户定义函数UDFs.我们将在第一步考察该模式.

.应用程序调试—我 们可以在一个数据库对象里设置断点,然后再返回到一个ASP.NET应用程序.当执 行这些数据库对象时,将遇到断点并转到调试器.注意,在应用程序调试模式,我 们不能在应用程序代码里打入一个数据库对象,所以我们必须直接在这些存储过 程或用户义函数里设置断点.我们将在第二步考察该模式.

.通过一个SQL Server Project来调试

Visual Studio专业版及Team Systems版包含一个 SQL Server Project类型,它通常用来创建管理数据库对象(managed database objects),我们将在后面的教程考察SQL Server Projects及如何调试其内 容.Visual Studio可以对本地或外部SQL Server实例进行调试。如果你使用的SQL Server数据库不在本地,那么自然,它就是一个外部实例.本文我们将使用本地 SQL Server实例,调试外部SQL Server实例的存储过程要比调试本地的多出一些 步骤.

如果你使用的是一个本地SQL Server实例,那么你可以从第一步看 到结尾.如果你使用的是外部SQL Server实例,那么你首先要确保是以Windows user帐户登录电脑,且包含一个连接到外部SQL Server实例的登录界面.此外,应 全部以系统管理员角色登录.你可以参阅本文结尾的“Debugging T-SQL Database Objects on Remote Instances”部分,查看如何配置Visual Studio 和 SQL Server以调试外部实例.

最后,我们应该明白支持T-SQL数 据库对象调试的特性没有支持.NET应用程序调试的特性丰富.比如,不支持断点条 件过滤(breakpoint conditions and filters),只能用到寥寥几个调试窗口;你 无法使用Edit 和 Continue等等。更多详情请参阅文章《Limitations on Debugger Commands and Features》(http://msdn2.microsoft.com/en- us/library/ms165035(VS.80).aspx)