65.9K
CodeProject 正在变化。 阅读更多。
Home

调试您的存储过程

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.42/5 (25投票s)

2016年5月31日

CPOL

4分钟阅读

viewsIcon

94613

本文将帮助您了解如何调试存储过程。

引言

我们可以使用调试菜单中的调试器轻松调试我们的 .NET 应用程序。.NET 应用程序有自己的 .PDB(程序调试数据库)文件,用于存储调试位置并递增调试配置的链接。 这些都是关于 .NET 的,但是我们可以调试存储过程吗? 答案是肯定的,我们可以调试我们的存储过程。 让我们找出如何做到这一点。

背景

存储过程因其增强的安全性、数据功能和应用程序的分离、改进的性能(因为对数据库的调用较少)等特性而广受欢迎,基本上它是一种一次性和一个地方的处理主题。SP(存储过程)现在在 DBA 和开发人员群体中更受欢迎,但是在编写大型 SP 后,如何调试它们? 如果它们运行正常,如何测试它们。

因此,这里需要调试存储过程,让我们看看我们需要什么来调试它。

一点一点地

1. 第一步是创建一个存储过程(如果您已经创建了存储过程,则可以跳过此步骤),这里我正在创建一个简单的存储过程,它从 EMP 表中选择特定 ID 的记录,请参阅下面的快照

2. 成功创建存储过程后,我们就可以调试它了。 基本上,有几种方法可以调试存储过程

  1. 使用 SQL Management Studio (SSMS)
  2. 使用 Visual Studio
我们将看到如何使用 **SQL Management Studio** 调试它(我使用的是 SQL 2008R2 Express)
  • 打开 SQL 2008 R2
  • 单击 ViewMenu --> 对象资源管理器
  • 单击连接数据库引擎 --> 输入 SQL 数据库的用户名和密码 --> 连接到数据库,请参阅下面的代码段

           

  • 展开数据库 --> 选择可编程性文件夹 --> 存储过程(您将在此处看到您的过程)

           

  • 通过右键单击数据库并单击“新建查询”打开新建查询窗口
  • 编写语句“Exec ProcedureName”(在我的例子中,过程名称为“sp_empInfo”)
  • 使用键 F9 在该行上放置调试器

           

 

  • 从 SQL 中选择绿色箭头(调试),您的调试器将启动,按 F11 进入过程
  • 您可以在“本地”和“调用堆栈”窗口中查看输出

         

使用 **Visual Studio** 调试它

您可以使用 Visual Studio 以相同的方式调试存储过程

  • 转到 Visual Studio 并连接数据库。 按照以下步骤操作
  • 打开 Visual Studio 编辑器
  • 单击 ViewMenu --> SQL Server 对象资源管理器(在 VS 2012 之前它是服务器资源管理器)

           

  • 在 SQL Server 对象资源管理器窗格中,右键单击数据连接
  • 选择添加连接
  • 输入凭据(例如 SQL 实例、SQL 服务器用户名、密码、数据库名称)
  • 右键单击数据库并允许“应用程序调试”“允许 SQL/CLR 调试”,请参阅下面的快照

          

  • 展开数据库 --> 选择可编程性文件夹 --> 存储过程
  • 右键单击过程 --> 选择“调试过程”

          

您现在可以开始调试了。

异常

访问权限是在调试存储过程时遇到的最大问题,

常见错误消息

以下是在调试存储过程期间发生的常见错误消息

  1. 无法启动 Transact-SQL 调试器,无法连接到数据库引擎实例...
  2. 无法启动 T-SQL 调试,无法连接到计算机...
  3. 登录失败:用户名未知或密码错误...
  4. 启动调试器失败,执行权限是...
  5. 无法附加到 SQL Server 进程...

请参阅下面的一些异常/错误快照

当您尝试调试远程存储过程时,会发生以下异常

调试时避免错误的常见要点

要解决上述错误,您可以尝试以下解决方法

  1. 如果您在本地 SQL Server 上调试存储过程,则您的本地 SQL 用户应具有“**sysadmin**”角色,要将用户添加到 sysadmin 角色,请运行以下存储过程(它是内置的),请参阅以下语法
  2. sp_addsrvrolemember '<Login>', 'sysadmin'
    
  3. 在 Windows 防火墙中配置 TCP 端口以启用 T-SQL 调试,有关详细信息,请参阅 MSDN 链接
  4. 在 Windows 防火墙中配置 TCP 端口以启用远程 T-SQL 调试(当 SQL Server 不同并且想要从客户端计算机对其进行调试时),请参阅 MSDN 链接,对于任何一种情况下的远程调试,您都可以使用 Windows 本地或域帐户身份验证
  5. 在 SQLserver 机器以及客户端上打开防火墙端口,端口:TCP 139、TCP 445、UDP 137 和 UDP 138
  6. SQL Management Studio 应该使用“以管理员身份运行...”启动
  7. Management Studio(客户端计算机)和服务器(SQL)应该在同一域中,否则您需要使用相同的用户名和密码设置帐户

我们学到了什么!

我们可以使用 Visual Studio 或 SSMS(SQL Management Studio)调试存储过程,我们可以为此使用局部变量、调用堆栈窗口。 您可以向存储过程提供参数(如果有)并获得即时调试器。

希望它在日常 .NET/SQL 生活中有所帮助。

感谢您

- Prasad

© . All rights reserved.