存储过程调试

昨天被问到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 防火墙”控制面板应用程序来启用程序和端口例外。

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

  • 将 TCP 端口 135 添加到例外列表。

  • 将程序 sqlservr.exe 添加到例外列表。默认情况下,sqlservr.exe 安装在 C:\Program Files\Microsoft SQL Server\MSSQL10.实例名称\MSSQL\Binn 下,其中,实例名称对于默认实例为 MSSQLSERVER,对于任何指定的实例则为相应实例的名称。

  • 如果域策略要求通过 IPSec 进行网络通信,还必须将 UDP 端口 4500 和 UDP 端口 500 添加到例外列表。

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

  • 将 TCP 端口 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 固定服务器角色成员的 Windows 帐户下运行。

    • 数据库引擎查询编辑器窗口必须使用 Windows 身份验证来连接,或使用作为 sysadmin 固定服务器角色成员的 SQL Server 身份验证登录名来连接。

    • 数据库引擎查询编辑器窗口必须连接到 SQL Server 2008数据库引擎的实例。如果查询编辑器窗口连接到处于单用户模式下的实例,您将无法运行调试器。

    我们建议在测试服务器上调试 Transact-SQL 代码,而不要在生产服务器上调试,原因如下:

    • 调试是一项需要高特权的操作。因此只允许 sysadmin 固定服务器角色成员在 SQL Server 中进行调试。

    • 当您调查多个 Transact-SQL 语句的运行时,调试会话通常会运行很长时间。会话获取的锁(如更新锁)可能会持有很长时间,直到终止会话或者提交或回滚事务。

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

    查询编辑器窗口会保持在调试模式下,直到查询编辑器窗口中的最后一个语句完成或您停止调试模式。可以使用以下任何一种方法来停止调试模式和语句执行:

    • “调试”菜单中,单击“停止调试”

    • “调试”工具栏上,单击“停止调试”按钮。

    • “查询”菜单上,单击“取消执行查询”

    • “查询”工具栏上,单击“取消执行查询”按钮。

    也可在“调试”菜单上单击“全部分离”,以停止调试模式,但允许剩余的 Transact-SQL 语句完成执行。

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

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

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




   大家一定在编写或分析一个复杂存错过程时,很希望能想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 @testVal1=@id
     declare @empid varchar
     declare @shipperid varchar
  
     select @empid=shipperid,@shipperid=empid from orders
     where orderid=@testVal1
  
     select @empid,@shipperid
END

 

 

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

 

第二步:添加数据连接。
    
填写好数据库名、登录账号、和要连接的数据库,点确定。
 
第三步:在要调试的存错过程上右键,选择“单步执行存储过程”
     
第四步:这时调试器会根据存储过程的参数,提示你输入几个用于条数的值,然后点确定就可以进入调试状态了。
      
现在大家就可以像调试VB代码一样,进行一步一步的跟踪了。

第二步:添加数据连接。

 

填写好数据库名、登录账号、和要连接的数据库,点确定。
 
第三步:在要调试的存错过程上右键,选择“单步执行存储过程”

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

 
现在大家就可以像调试VB代码一样,进行一步一步的跟踪了。

分类: 开发技能


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
gbase是中国自主研发的大型关系型数据库系统,通过存储过程可以实现在数据库存储一组SQL语句,并可以通过调用存储过程执行这些SQL语句,提高了数据库的性能和数据安全性。 gbase存储过程调试是指在开发和维护存储过程的过程中,通过一系列的步骤和方法来验证和修复存储过程中的错误。 首先,我们需要确认存储过程的设计和实现是否符合需求,包括存储过程的输入参数、输出结果以及涉及的业务逻辑等。这个步骤需要与开发团队和业务人员进行充分的沟通和确认,确保存储过程的设计能够满足实际业务需求。 接下来,我们可以使用gbase提供的存储过程编辑和调试工具,如gbase Developer等,通过这些工具可以方便地编辑、执行调试存储过程。在调试过程中,我们可以逐步执行存储过程中的每个SQL语句,观察执行结果是否与预期一致。如果存在错误或异常,我们可以使用调试工具提供的调试功能,例如设置断点、查看变量值等,来定位和修复错误。 此外,还可以使用gbase提供的存储过程日志功能来追踪和记录存储过程执行过程中的详细信息,包括SQL语句的执行情况、耗时等。这些日志可以帮助我们更好地了解存储过程执行流程,从而帮助我们定位和修复问题。 最后,一旦存储过程调试完成并通过测试,我们可以将其部署到生产环境中,确保其在实际运行中的稳定性和性能。 总结来说,gbase存储过程调试是通过使用gbase提供的调试工具、日志功能等来验证和修复存储过程中的错误,确保其符合需求并在生产环境中稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值