`
lovnet
  • 浏览: 6672245 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

[翻译]在Visual Studio 2005中调试SQL Server 2005的存储过程

阅读更多
原文地址:http://aspnet.4guysfromrolla.com/articles/051607-1.aspx
[原文源码下载]


[翻译]在Visual Studio 2005中调试SQL Server 2005的存储过程



原文发布日期:2007.05.16
作者:Scott Mitchell
翻译:webabcd


介绍
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语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。

在服务器资源管理器中右键单击“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>
<addname="NorthwindConnectionString"connectionString="DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;IntegratedSecurity=True;UserInstance=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项目中调试。 本文中,我们一起研究了前两种调试方法(使用本地数据库)。

祝编程愉快!
分享到:
评论

相关推荐

    在Visual Studio 2005中调试SQL Server 2005的存储过程.doc

    在Visual Studio 2005中调试SQL Server 2005的存储过程

    在Visual Studio和SSMS中调试存储过程

    在Visual Studio和SQL Server Management Studio中调试存储过程。

    在VisualStudio.NET中使用SQLServer2000生成数据库应用程序

    北京火龙果软件工程技术中心适用于: Microsoft:registered:SQLServer:trade_mark:2000 MicrosoftVisualStudio:registered:.NET摘要:如何使用VisualStudio.NET工具创建数据库对象和Transact-SQL存储过程。...

    SQL Server 2008 商业智能完美解决方案(3)

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    在ASP.NET 2.0中操作数据之七十二:调试存储过程

    除了调试代码以外,Visual Studio也支持对SQL Server里面的存储过程进行调试.就像可以在ASP.NET页面的后台代码类或Business Logic Layer class类里设置断点一样,我们也可以在存储过程里设置断点.  本文我们将考察...

    SQL Server 2008商业智能完美解决方案 1/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    ADO.NET 2.0技术内幕(高清 中文 带书签 全)

    作者针对如何利用Visual Studio 2005中的新工具和向导,编写、测试并调试数据库应用程序代码,用丰富的示例代码、教程式的风格及特色段落介绍了最佳实践。本书描述了ADO.NET对象模型及其用于Web扩展的XML特性,还...

    SQL Server 2008商业智能完美解决方案 3/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008商业智能完美解决方案 2/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    1.5.5 在visual studio 2010中记录和使用宏 55 1.5.6 类图 57 1.5.7 应用程序生命周期管理 58 1.5.8 性能工具 60 1.6 小结 62 第2章 对象和visual basic 63 2.1 面向对象的术语 64 2.1.1 对象、类和...

    asp.net知识库

    在Framework1.0下同时连接SqlServer和Oracle的一些体会 XML XPath XPath最通俗的教程(ZZ) XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个...

    本科毕业设计开题报告(学生电子作业提交与分析系统的设计与实现V2)

    使用Visual Studio 2010, 专业开发人员能够: 使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境 在统一的开发环境中,开发并调试多层次的服务器应用程序使用集成的可视化数据库设计和报告...

    数据库助手,方面操作数据库

    编程语言:Visual Studio .NET C# 调试环境:WINDOWS 2000 server 运行环境:需要 Microsoft .NET Framework1.1(dotnetfx.exe 23M) 支持 版 权:完全免费 使用说明: 此程序提供给经常使用SQL server,Oracle ...

    Visual Basic 2010入门经典(第6版)完整版 之1/2

    .NET Framework提供了一套通用的基类,Visual Studio 2010中的所有编程语言都可以使用它们,这样一来,程序员在创建面向对象的程序方面就拥有与C#或C++一样的功能了。  本书将使您在Visual Basic 2010编程方面打下...

    Shark DB Expert 2.7

    2. 遍历数据库中表、视图、存储过程、自定义函数. 系统表(仅支持MS SQL,Sybase) 同义词、程序包、序列、簇、动态性能视图(仅针对Oracle) 3. 内嵌本人开发的强大功能的SQL Builder & Parser 这是本软件的核心...

    Visual Basic 2010入门经典(第6版)完整版 之2/2

    .NET Framework提供了一套通用的基类,Visual Studio 2010中的所有编程语言都可以使用它们,这样一来,程序员在创建面向对象的程序方面就拥有与C#或C++一样的功能了。  本书将使您在Visual Basic 2010编程方面打下...

    C# 大作业:BlogOnline(个人博客在线系统)

    打开SQL Server 2005右击数据库文件夹,选择附加。然后单击添加,选择刚才复制的.mdf然后单击确定完成数据库创建。 也可按第十章中对应描述文字创建。 2、本程序开发时连接的数据库服务器时本地(local)且...

    Access 2007 VBA宝典 1/4

    最后介绍了更为高级的主题,包括VB 6.0、Access加载项、Visual Studio 2005共享加载项、使用XML实现自定义Office 2007功能区,以及与SQL Server数据库的交互等。  本书内容丰富,并且在配套网站上提供了书中所有的...

    Access 2007 VBA宝典 4/4

    最后介绍了更为高级的主题,包括VB 6.0、Access加载项、Visual Studio 2005共享加载项、使用XML实现自定义Office 2007功能区,以及与SQL Server数据库的交互等。  本书内容丰富,并且在配套网站上提供了书中所有的...

Global site tag (gtag.js) - Google Analytics