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

Posted

技术标签:

【中文标题】在 SQL Server Management Studio 中调试存储过程【英文标题】:Debugging stored procedures in SQL Server Management Studio 【发布时间】:2010-01-06 22:37:37 【问题描述】:

有没有办法进入 SQL Server Management Studio 中的存储过程代码?我知道这可以通过 Visual Studio 实现,但我正在 Management Studio 中寻找可靠的调试解决方案

【问题讨论】:

不是我在 SSMS 2005 中所知道的 - 您只能使用 PRINT 语句和条件逻辑/流控制 你有没有解决这个问题?以下答案均无效。 【参考方案1】:

仅适用于 SQL 2008 和 SSMS 2008。从菜单“Debug\Start Debugging”中选择或按 Alt+F5 将启动逐步 T-SQL 调试器。

在 2005 年,唯一的方法是附加 Profiler 并监视 SP:StmtCompleted 事件,这并不是一步一步调试器,但至少您会看到执行流程。显然,不能在生产机器上完成。

【讨论】:

我收到错误“无法启动调试器”在 SSMS 2008 上对象“sp_enable_sql_debug”的 EXECUTE 权限被拒绝。 >> 要在 SQL Server 2005 上进行调试,运行 Visual Studio 的帐户和用于连接 SQL Server 的帐户都必须是 sysadmin 角色的成员。 msdn.microsoft.com/en-us/library/ms241735(VS.80).aspx 他们从来没有想过不是系统管理员的人可能需要调试sps? @HLGEM:调试是你在开发盒上做的事情,而不是在生产上。此外,这有一个非常重要的原因:任何拥有调试权限的人都是这个盒子的事实上的管理员,这仅仅是因为调试器可以做的事情所投入的力量。因此,要求您成为系统管理员只是承认事实并关闭可能的特权升级路径。 @RemusRusanu 在一些公司中,软件开发人员编写存储过程,即使他们不是唯一拥有系统管理员权限的 dba。如果您担任该角色,那么能够调试自己的 sp 是否有意义?【参考方案2】:

我在这里写了一篇非常详细的博客文章:

http://www.diaryofaninja.com/blog/2010/11/23/debugging-sql-queries-function-amp-stored-procedures-with-sql-management-studio

基本上它的要点是你输入你的 sql 查询来执行你的存储过程,而不是按 F5 或点击感叹号,你点击播放按钮并使用 F10 和 F11 单步执行并进入您的存储过程。

这很方便,但似乎没有人使用它。

【讨论】:

投反对票。不正确。按下执行按钮不会启动调试会话,它只会执行 sql。【参考方案3】:

从 SSMS 17 起,您无法调试任何 SQL。

【讨论】:

这是正确答案。 M$ 已移除使用 SSMS 调试 SQL 的所有功能。 看看这个,我没查过。 docs.microsoft.com/en-us/answers/questions/191819/…【参考方案4】:

SQL Server 2000 的查询分析器中的调试存储过程的功能没有被添加到 SQL Server 2005 中。Microsoft 意识到了这个错误并将该功能重新添加到 SQL Server 2008 中。

在 SSMS 2008 中,您可以通过单击工具栏上的调试按钮或按 ALT+F5 来启动调试器。

不幸的是,针对 2005 数据库运行 SSMS 2008 将不允许您进行调试,因此 你必须坚持使用 Visual Studio。

【讨论】:

【参考方案5】:

注意使用 Visual Studio 调试存储过程。实现这一点的方式是使用大量的锁定,因此您永远不应该在生产系统上这样做。

【讨论】:

【参考方案6】:

是的,在 SSMS 2008 中,您绝对可以单步执行 T-SQL 代码(代码块、存储函数、存储过程)并对其进行调试。

有关详细信息,请参阅这篇出色的文章 Management Studio Improvements in SQL Server 2008 - 它还涉及调试(接近文章末尾)。

【讨论】:

我收到错误“无法启动调试器”对象“sp_enable_sql_debug”的执行权限被拒绝.. 尼克你必须是系统管理员角色的成员。

以上是关于在 SQL Server Management Studio 中调试存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server Management Studio 中注册 SQL Server 服务器?

SQL Server Management Studio (SSMS,SQL Server管理工具) 一直在加载程序包解决方案

如何使用 Windows 和 SQL 身份验证使用 SQL Server Management Studio 连接到 SQL Server

使用 SQL Server Management Studio 连接到 SQL Server

如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列

在 SQL Server Management Studio 中更改 SQL Server 数据库中的列属性