存储过程调试

SQL SERVER2008存储过程调试

昨天被问到sql server中存储过程怎么调试,我曾经写存储过程,调试方法非常笨拙,就是逐条运行语句,然后查看结果是不是预期的,这样的调试方法,实在是无奈之举,极大程度地限制了开发速度和准确性。今天在他的提点下,研究了下SQL SERVER 2008的存储过程调试。

1.在SQL SERVER2008中调试存储过程

下面内容引自MSDN

SQL SERVER 2008的SSMS是支持单步debug的,可是在调试之前必须配置权限。

假设 SQL Server Management Studio 与 SQL Server 数据库引擎实例在同一台计算机上执行,则对于执行 Transact-SQL 调试器没有配置要求。可是,当 SQL Server Management Studio 与数据库引擎实例在不同计算机上执行时,若要执行 Transact-SQL 调试器,则必须在两台计算机上使用“Windows 防火墙”控制面板应用程序来启用程序和port例外。

在执行数据库引擎实例的计算机上,在“Windows 防火墙”中指定下面信息:

  • 将 TCP port 135 加入?到例外列表。
  • 将程序 sqlservr.exe 加入?到例外列表。默认情况下,sqlservr.exe 安装在 C:\Program Files\Microsoft SQL Server\MSSQL10.实例名称\MSSQL\Binn 下,当中,实例名称对于默认实例为 MSSQLSERVER,对于不论什么指定的实例则为对应实例的名称。
  • 假设域策略要求通过 IPSec 进行网络通信,还必须将 UDP port 4500 和 UDP port 500 加入?到例外列表。

在执行 SQL Server Management Studio 的计算机上,在“Windows 防火墙”中指定下面信息:

  • 将 TCP port 135 加入?到例外列表。
  • 将程序 ssms.exe (SQL Server Management Studio) 加入?到例外列表。默认情况下,ssms.exe 安装在 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE 下。
  • 启动 Transact-SQL 调试器的要求例如以下:
    • SQL Server Management Studio 必须在作为 sysadmin 固定server角色成员的 Windows 帐户下执行。
    • 数据库引擎查询编辑器窗体必须使用 Windows 身份验证来连接,或使用作为 sysadmin 固定server角色成员的 SQL Server 身份验证登录名来连接。
    • 数据库引擎查询编辑器窗体必须连接到 SQL Server 2008数据库引擎的实例。假设查询编辑器窗体连接到处于单用户模式下的实例,您将无法执行调试器。

    我们建议在測试server上调试 Transact-SQL 代码,而不要在生产server上调试,原因例如以下:

    • 调试是一项须要高特权的操作。因此仅仅同意 sysadmin 固定server角色成员在 SQL Server 中进行调试。
    • 当您调查多个 Transact-SQL 语句的执行时,调试会话一般会执行非常长时间。会话获取的锁(如更新锁)可能会持有非常长时间,直到终止会话或者提交或回滚事务。

    启动 Transact-SQL 调试器可将查询编辑器窗体置于调试模式。在查询编辑器窗体进入调试模式时,调试器会在第一个代码行处暂停。然后,您能够单步运行代码,在特定 Transact-SQL 语句上暂停运行,并使用调试器窗体来查看当前运行状态。能够通过在“查询”工具栏上单击“调试”button,或在“调试”菜单上单击“启动调试”来启动调试器。

    查询编辑器窗体会保持在调试模式下,直到查询编辑器窗体中的最后一个语句完毕或您停止调试模式。能够使用下面不论什么一种方法来停止调试模式和语句运行:

    • 在“调试”菜单中,单击“停止调试”。
    • 在“调试”工具栏上,单击“停止调试”button。
    • 在“查询”菜单上,单击“取消运行查询”。
    • 在“查询”工具栏上,单击“取消运行查询”button。

    也可在“调试”菜单上单击“所有分离”,以停止调试模式,但同意剩余的 Transact-SQL 语句完毕运行。

原文http://msdn.microsoft.com/zh-cn/library/cc646024(v=SQL.100).aspx

2.在Visual Studio中调试存储过程(以VS2010为例)

打开server资源管理器,加入?一个SQL SERVER 2008数据库连接,然后在存储过程节点上点右键,选择“单步运行存储过程”,就可以进入单步调试状态,同上边过程,也要设置权限。

利用VS调试存储过程

大家一定在编写或分析一个复杂存错过程时,非常希望能想VB代码一样进行调试,可惜SQL Server本身并没有提供调试器,我们能够利用VS来进行调试。

我写了一个简单的存储过程,介绍一下用VS调试存储过程的步骤。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

Create
PROCEDURE
testProcDebugger

    @id
int

AS

BEGIN

    declare
@testVal1 int

    set
@[email protected]

    declare
@empid varchar

    declare
@shipperid varchar

 

    select
@empid=shipperid,@shipperid=empid from
orders

    where
[email protected]

 

    select
@empid,@shipperid

END

第一步:启动Visual Studio,点“试图”->“服务资源管理器”

第二步:加入?数据连接。

填写好数据库名、登录账号、和要连接的数据库,点确定。

第三步:在要调试的存错过程上右键,选择“单步运行存储过程”

第四步:这时调试器会依据存储过程的參数,提示你输入几个用于条数的值,然后点确定就能够进入调试状态了。

如今大家就能够像调试VB代码一样,进行一步一步的跟踪了。

第二步:加入?数据连接。

填写好数据库名、登录账号、和要连接的数据库,点确定。

第三步:在要调试的存错过程上右键,选择“单步运行存储过程”

第四步:这时调试器会依据存储过程的參数,提示你输入几个用于条数的值,然后点确定就能够进入调试状态了。

如今大家就能够像调试VB代码一样,进行一步一步的跟踪了。

分类: 开发技能

时间: 2024-08-24 09:50:59

存储过程调试的相关文章

SQL存储过程调试

转自:http://www.cnblogs.com/xiangzhong/archive/2012/10/27/2742974.html 今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了. 于是琢磨了一下.SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本.非常不方便. 还好,SQLSE

PL/SQL Developer使用技巧、快捷键、存储过程调试

1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools->Preferences->Editor,将Keyword case选择Uppercase.这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写.这样阅读代码比较容易,且保持良好得编码风格,同理,在Tools->Preferences->Code Assistant(助手)里可

mysql存储过程调试方法

有如下一个存储过程 CREATE PROCEDURE `p_next_id`(kind_name VARCHAR(30), i_length int,currentSeqNo VARCHAR(3),OUT o_result INT) BEGIN SET @a= NULL; SET @b= NULL; SELECT id INTO @a FROM t_seq WHERE number= currentSeqNo and length= i_length ; IF (@a is null ) THE

oracle存储过程调试方法

PL/SQL中为我们提供了[调试存储过程]的功能,可以帮助你完成存储过程的预编译与测试. 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要.在右键菜单中选择Add debug information. start debugger(F9)开始我们的测试,Run(Ctrl+R) 随时在varible List中输入我们想查看的变量 其它: Step into(Ctrl+N):单步调试,进入下一步 Step over(Ctrl+O):结束该语句 Step out(Ctrl+T

MYSQL存储过程调试过程

mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有几种简单的方式追踪执行过程: 1.用一张临时表,记录调试过程: 2.直接在存储过程中,增加select xxx,在控制台查看结果: 3.把存储过程的sql复制到navicat查询中,然后SET @num使用自定义变量. 实际应用场景是三种方法都会用到,结合不同的场景使用. 方法1适用于有多条数据处理,处理结果无法通过变量来存储. 方法2适用于一般的存储过程,查看结果: 方法3适用于,需要一步步调优存储过程.执行每一

Postgresql存储过程调试:PostgreSQL 之 Function NOTICE

转载自http://zhenghaoju700.blog.163.com/blog/static/13585951820116782843994/ 先安装一个PostgreSQL(见补充知识) 比较Oracle PL/SQL PL/SQL 中有 dbms_output.put_line("This is a log"); 可以进行简单的调试 当然我们PostgreSQL 也有相应的函数 RAISE NOTICE 'This is a log %', param: % 占位符 param

oracle存储过程调试-plsql

1.搜索找到存储过程的包,并打开 选中右击--view spec&body 2.找到要测试的存储过程,设置断点,进行测试 原文地址:https://www.cnblogs.com/xiaoshualx/p/10880696.html

调试SQL Server的存储过程及用户定义函数

分类: 数据库管理 2005-06-03 13:57 9837人阅读 评论(5) 收藏 举报 sql server存储vb.net服务器sql语言 1.在查询分析器中调试 查询分析器中调试的步骤如下:    SQL 2000查询分析器        --左连的对象浏览器(没有的话按F8)        --对象项中        --右键调试的存储过程        --调试        --输入参数(必须输入所有的参数,包括默认值/输出参数        --点击执行        --出现

存储过程系列之调试存储过程 SQL Server 2005

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