今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了。
于是琢磨了一下。SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本。非常不方便。
还好,SQLSERVER 2008中这个很重要而且方便的功能又回来了。
不过,SQLSERVER 2008的调试功能和SQL2000的方法差别很大。SQL2000是在查询分析器中的对象浏览器中选中需要调试的存储过程,右键----调试---输入参数开始调试。
sqlserver2008中则完全不同,变成了必须要在SSMS中EXEC [PROCEDURE NAME] @VAR1,@VAR2,然后点绿色三角或者点菜单中的调试---启动调试。然后点工具栏的最右边的单步调试或者跳出等。下面的变量窗口和堆栈窗口等可以查看调试中变量等动态变化值。
sqlserver2008调试的要求和条件:如果在引擎所在的电脑或服务器上调试,则只需要SA或者WINDOWS用户登陆即可。如果是异地调试,则需要设置防火墙例外,增加SSMS和SQLSERVER.EXE为允许,增加135端口允许通过。
总之,SQL2008的调试比2000操作起来麻烦多了,要求也多了。刚开始感觉不如2000的好用,也可能是使用2000习惯了。习惯是可怕的,但是微软是在不断进步的...
一、回顾早期的SQL SERVER版本:
早在SQL Server 2000时代,查询分析器的功能还很简陋,远不如VS那么强大。到SQL Server 2005时代,代码高亮、SQL优化等功能逐渐加强,但是依然无法调试SQL语句。好一点的第三方的SQL语法编辑器似乎也不够完美,这样导致一些人抱怨存储过程不便于维护,开发的时候能不用则不用。
二、SQL Server 2008 Express 智能提示加强:
该功能是SQL2008在SQL Server 2005之后的升级版,我们可以很方便的调用智能提示,和 VS一致:使用快捷键ctrl + J 即可。
截图如下:
该功能是否与VS一样了呢? 毕竟他们都是微软的产品。
三、调试T-SQL语句:
1.Debug普通T-SQL语句:
SQL代码如下:
- usenorthwind
- go
-
declare@iint,@jint,@kint
-
set@i=1;
-
set@j=2;
-
set@k=@i+@j
-
select@i;
- go
非常简单的定义了 三个int 型变量:i、j、k并且对这些变量进行简单的逻辑运算,在Management Studio 中只要轻松的按F11键,即可调试以上代码块。
截图如下:
接着点击F11逐语句debug 或者F10逐过程调试代码。
截图如下:
这个dubug的场面您是否觉得已经和VS相差无几了呢?
四、支持复杂存储过程嵌套debug:
您可能会疑问,在一个庞大的系统中,如果数据库逻辑绝大部分都是存储过程实现的情况下,会出现存储过程嵌套存储过程或者嵌套存储函数这样的代码。
SQL2008是否支持调试功能呢?答案是肯定的。
首先定义一个简单的存储过程(本文使用NorthWind数据库)代码如下:
- CREATEproceduresp_getOrders
-
@orderIDint=null
-
as
-
if(@orderIDisnull)
-
begin
-
print'null'
-
end
-
else
-
begin
-
print'correct'
-
end
-
select*fromOrderswhereOrderID=@orderID
- go
该存储过程在以下批处理内被调用,代码如下:
- declare@iint,@jint,@kint
-
set@i=1;
-
set@j=2;
-
select@k=@i+@j
-
execsp_getOrders10248
-
select@i;
- go
F11对以上代码进行SQL Debug。
截图如下:
当断点经过exec sp_getOrders 10248 这段代码时,点击F11进入sp_getOrders存储过程进行逐语句debug。
截图如下:
这样可以在嵌套的存储过程或函数内进行debug了,此刻不得不承认: 升级后的SQL2008越来越强大。您还恐惧使用或者调试存储过程么?
分享到:
相关推荐
在SQL Server 2008中调试T-SQL语句和存储过程是一项重要的技能,尤其对于数据库开发者来说,能够有效地定位和修复代码错误至关重要。在SQL Server 2000中,调试是通过查询分析器的简单界面进行的,而在SQL Server ...
### SQL Server 2008 轻松编写 T-SQL 存储过程 #### 一、引言 SQL Server 2008 是一款功能强大的数据库管理系统,它提供了多种工具来帮助开发者高效地进行数据库管理和开发工作。其中,T-SQL(Transact-SQL)是SQL...
1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...
8. **存储过程**:预编译的T-SQL语句集合,可重复使用并提高性能。 9. **触发器**:在数据更改(INSERT、UPDATE或DELETE)时自动执行的程序,用于实现业务规则或数据完整性。 10. **事务和隔离级别**:确保数据...
6. **存储过程和触发器**:存储过程是预编译的T-SQL代码集合,可以提高性能并简化复杂的任务;触发器则是在特定数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行的代码。 7. **事务和并发控制**:理解事务的...
本书详细介绍了如何创建、调试和优化存储过程。 - **触发器**:触发器是在特定事件发生时自动执行的一段SQL代码。书中对触发器的工作原理进行了深入分析,并提供了多种实际应用场景示例。 #### 五、事务处理与并发...
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
SQL Server 2008是微软推出的一款强大的关系型数据库管理系统,被广泛应用于企业级数据存储和处理。本文将深入探讨四本关于SQL Server 2008的技术内幕书籍所涵盖的重要知识点,帮助读者提升数据库管理和开发技能。 ...
6. **动态SQL**:允许在运行时生成和执行SQL语句,增加了灵活性但同时也需要谨慎处理防止SQL注入攻击。 7. **错误处理和调试**:讲解如何处理T-SQL中的错误,以及如何使用TRY...CATCH结构来捕获和处理异常。 8. **...
5. **存储过程与触发器**:存储过程是预编译的SQL语句集合,可以提高执行效率并实现业务逻辑;触发器则是在特定数据库操作(如INSERT、UPDATE或DELETE)前后自动执行的代码。理解这两者及其应用场景,能提升数据库的...
这本书深入探讨了SQL Server 2005的核心语言Transact-SQL(T-SQL),它是SQL Server进行数据查询、更新、插入和删除操作的主要工具,同时也是开发存储过程、触发器和用户定义函数的关键。 在SQL Server 2005中,T-...
9. **开发与集成**:SQL Server 2008支持多种开发环境和工具,如Visual Studio和SSMS,书中可能涵盖如何在这些环境中使用T-SQL进行开发和调试。 10. **高级特性**:SQL Server 2008引入了许多新特性,如列存储索引...
总之,t-SQL语句速写程序是针对SQL Server开发者的实用工具,通过自动化和辅助功能,提高了编写t-SQL语句的效率,降低了出错可能性,同时也为学习和掌握t-SQL提供了便利。对于频繁使用t-SQL的数据库管理员和开发者来...
本书《Beginning T-SQL with Microsoft SQL Server 2005 and 2008》由Paul Turley和Dan Wood合著,是为那些希望学习Transact-SQL(简称T-SQL)语言以及如何在Microsoft SQL Server 2005和2008环境中使用该语言的专业...
通过SSMS,用户可以编写、调试、执行T-SQL语句,创建和管理数据库对象,如表、视图、存储过程,以及执行备份、恢复等维护任务。此外,SSMS还支持数据库设计、性能监视和优化,以及对SQL Server Agent的管理。 **2. ...
1. **事件监视**:你可以设置事件跟踪来捕获各种数据库操作,如T-SQL语句的执行、存储过程调用、锁事件、登录/登出等。这对于理解数据库的性能瓶颈和潜在问题至关重要。 2. **过滤器应用**:ExpressProfiler支持...
《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》这本书是SQL Server数据库开发者和管理员的重要参考资料,尤其对于初学者来说,它提供了一个深入理解T-SQL(Transact-SQL)语言的全面指南。T-SQL是SQL Server...
9. **开发工具**:Visual Studio、SQL Server Management Studio (SSMS) 和Azure Data Studio是常用的SQL Server开发和管理工具,它们提供图形界面和脚本编辑器,便于编写、调试和执行SQL语句。 10. **T-SQL编程**...