在数据库中直接调试
  在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法。 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数。本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库。我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID。这是一个没什么实用价值的存储过程,但是它有很多的T-SQL语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。

服务器资源管理器中右键单击“DoThings”存储过程,然后选择单步执行存储过程的选项。 (注意:SQL Server调试只有Team Systems和Professional版本的Visual Studio才支持。)

  调试器启动并且执行存储过程。因为存储过程“DoThings”需要一个传入值给@CategoryID,所以会弹出一个对话框让我们提供该值。输入1后单击OK。

首先会执行第一条语句。你可以选择逐语句或逐过程进行调试(快捷键分别为F11和F10),也可以在监视窗口中添加参数和变量。存储过程调试期间的截屏如下图所示。左侧的黄色箭头指的是当前执行的语句。监视窗口中显示的是@CategoryID和@AvgPrice的类型和值。

  存储过程知行完后,结果会显示在输出窗口中。

你可以看到,在数据库中直接调试存储过程是非常简单的,而且很好理解。简单到你只需要在服务器资源管理器中,右键单击存储过程,然后选择单步执行存储过程即可。

在ASP.NET程序中调试数据库对象
  数据库中直接调试可以让我们非常简单地在Visual Studio IDE里直接调试存储过程。但是,有的时候我们需要在ASP.NET程序调用相关的存储过程的时候再调试。这样,当某个数据库对象被调用的时候,我们就可以对其进行调试。

这种调试方法整合到了应用程序的调试之中。 要使用它需要做如下几步:
  ·给你想要调试的数据库对象添加断点。 数据库对象只有在包含断点的情况下才会被调试。例如,一般情况下,应用程序在调用存储过程的时候,你是不能进入存储过程内部的,如果你想调试存储过程,那就必须要在存储过程内部设置断点。
  ·配置应用程序,使其可以调试SQL Server对象。这个比较容易,你只要选中一个复选框即可。
  ·禁用连接池。 连接池可以提高性能,它允许程序使用一个连接池中的某个空闲的连接来连接数据库。如果启用它,就不能正确地调试了。因为默认情况下是启用连接池的,所以我们必须在设置连接字符串的时候禁用它。(当你完成了在ASP.NET程序中调试SQL Server对象的工作之后,一定要记得重新启用连接池)

接下来让我们来看一看这几个步骤具体该如何做。

首先,在Visual Studio中打开“DoThings”存储过程,然后在“DECLARE @AvgPrice money”这句上设置断点。 这样第一步就完成了,接下来做第二步。

配置ASP.NET程序,以使其支持SQL Server的调试。右键单击项目,然后选择属性。此时将会弹出一个如下图所示的对话框。 选择启动选项,然后在“调试器”部分中选中“SQL Server”复选框。这样就完成前两步了,还差最后一步。

  最后一步,我们需要修改连接字符串,使其禁用连接池。这个任务相当简单,你只要在你的连接字符串后加一个属性“Pooling=false”即可。假设你将连接字符串信息定义在了Web.config的<connectionString>节点里,那么修改后的连接字符串如下所示:

 
<connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/NORTHWND.MDF;Integrated Security=True;User Instance=True; Pooling=false" providerName="System.Data.SqlClient"/> </connectionStrings>

现在,我们已经完成了这3个步骤。 为了演示如何调试,我们来创建一个调用“DoThings”存储过程的ASP.NET页。本文结尾处你下载的Demo中就包含有这个页面。当你调试ASP.NET程序并且访问了这个页的时候,程序就会暂停在存储过程中设置了断点的地方。然后,你就可以单步执行存储过程,并且可以在监视窗口中查看和修改参数和变量的值,就像在数据库中直接调试存储过程一样。

结论
  在SQL Server之前的版本中有一套用于调试存储过程的独立工具。 到了现在的SQL Server 2005,存储过程、触发器和用户自定义函数(UDFs)都是通过Visual Studio Team System和Professional版本来调试的。 它给我们带来了3种调试SQL Server的方法:数据库中直接调试、应用程序调试和在SQL Server项目中调试。本文中,我们一起研究了前两种调试方法(使用本地数据库)。

存储过程系列之调试存储过程 SQL Server 2005的更多相关文章

  1. SQL Server 2005 盛宴系列 经典教程

    SQL Server 2005 盛宴系列 经典教程  [复制链接]   发表于 2007-3-27 14:08 | 来自 51CTO网页 [只看他] 楼主     TECHNET  SQL serve ...

  2. 解密SQL SERVER 2005加密存储过程,函数

    在SQL SERVER 2005中必须用专用管理连接才可以查看过程过程中用到的表 EG:sqlcmd -A 1>use test 2>go 1>sp_decrypt 'p_testa ...

  3. 怎样修改SQL Server 2005/2008的系统存储过程(转)

    我们知道,SQL Server 2005/2008的系统存储过程在正常情况下是无法直接修改的. 尽管本文是介绍怎样修改它的,但在这里,我还是建议大家尽量不要去修改它.(好像有点绕哈...) OK,闲话 ...

  4. 使用SQL Server 2005数据库管理工具 - 初学者系列 - 学习者系列文章

    本文讲述使用SQL Server 2005 Express数据库管理工具的使用. 1.打开数据库管理工具 2.选择下面的SQL Server 身份验证,因为在安装数据库的时候设置了sa的密码. 3.选 ...

  5. 安装SQL Server 2005 - 初学者系列 - 学习者系列文章

    初学者阶段,建议从数据库为基础入手进行学习. 下面介绍微软的SQL Server 2005数据库的安装. 首先,从下列地址获取SQL Server 2005的安装程序. ed2k://|file|cs ...

  6. 浅析SQL Server 2005中的主动式通知机制

    一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话,可以避 ...

  7. 回首经典的SQL Server 2005

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...

  8. 监控 SQL Server (2005/2008) 的运行状况

    Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的 ...

  9. SQL SERVER 2005删除维护作业报错:The DELETE statement conflicted with the REFERENCE constraint "FK_subplan_job_id"

    案例环境: 数据库版本: Microsoft SQL Server 2005 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64) ) 案例介绍: 对一个数据 ...

随机推荐

  1. Custom Action : dynamic link library

    工具:VS2010, Installshield 2008 实现功能: 创建一个C++ win32 DLL的工程,MSI 工程需要调用这个DLL,并将Basic MSI工程中的两个参数,传递给DLL, ...

  2. STL容器与配接器

    STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector                             行为类似于数组,但可以根据要求 ...

  3. hdu 1576 A/B

    原题链接:hdu 1576 A/B 同样是用扩展的欧几里得算法.A = 9973k+n = xB,从而转化为:xB-9973k=n求解x即可. 具体扩展欧几里得算法请参考:hdu 2669 Roman ...

  4. linux shell编程学习笔记(二) --- grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  5. Linux作业控制

    在Linux中,利用Shell的作业控制是比较常用的操作,在这一节中我们将探究作业控制相关的操作.为了方便我们查看区分不同的进行,我们编写如下程序,其功能是每间隔2秒输出一次自己的编号. /* ** ...

  6. NodeJS较高版本对connect支持的问题

    在nodejs中引入connect后,构建应用的代码如下 var connect = require('connect'); var server = connect.createServer(); ...

  7. html5新增标签兼容性

    很多低版本的浏览器是不识html5新增的标签的,所以为了解决浏览器兼容性问题,主要有两种方法: js可以创建我们自定义的标签,例如,我们可以用js语句 document.createElement(' ...

  8. oracle服务介绍

    按照windows 7 64位 安装oracle 11g R2中的方法成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为: 1. Oracle ORCL VSS Writer Ser ...

  9. web2py--------------用web2py写 django的例子 --------建立一个投票应用(3)

    我们建立了数据模型,然后这次来进行页面的展示 1.这里是列表页面的 control 这里是dal的语法 只有两行 第一行 是查询出所有问题,也就是问题的id大于0 第二行是返回问题的列表 这里是vie ...

  10. cocos2d-js Mac下的JSB绑定步骤

    cocos2d-js由于采用js语言,使得做一些native的功能比较受限,例如文件和目录操作.socket操作等.逼不得已,这时我们就不得不做jsbinding了.. 官方提供的jsbinding方 ...