在SSMS中高效地调试存储过程

时间:2019-11-26 01:18:42

标签: sql sql-server debugging stored-procedures ssms

多年来,为了调试存储过程,我使用了一种非常la脚的基本方法。我想知道是否有更现代的方法或工具可以使生活更轻松。

假设我们运行了存储过程

EXECUTE MyCoolProcedure 'Parameter1', 2, 'Parameter3', '2019-11-25'

它失败并显示错误

  

消息8134,级别16,状态1,过程MyCoolProcedure,第11行[批处理开始第0行]
  除以零错误。

Line 11部分并不是特别有用,因为不清楚这些行的编号方式。

如果我在存储过程中单击修改,我会看到

USE [MyCoolDatabase]
GO
/****** Object:  StoredProcedure [dbo].[MyCoolProcedure]    Script Date: 11/26/2019 3:01:05 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[MyCoolProcedure]
(
    @p1 varchar(20),
    @p2 int,
    @p3 varchar(30),
    @p4 smalldatetime
)
AS
BEGIN
    SELECT -- I bet it fails in here, Line #18
        1 /
        (@p2 - 2
        );
END;

很明显,它在第18行中失败了,所以我们可能只需要在显示的任何行号上添加 7 即可。但是您会发现这就像一条经验法则。

但是我们假装这里并没有那么明显,所以我们需要摆一些调试语句来找出错误所在

现在写的是我复制过程声明的全部内容并就地编辑它


ALTER PROCEDURE [dbo].[MyCoolProcedure] DECLARE
(
    @p1 varchar(20) = 'Parameter1',
    @p2 int = 2,
    @p3 varchar(30) = 'Parameter3',
    @p4 smalldatetime = '2019-11-25'
)
AS
BEGIN
    SELECT -- I bet it fails in here, Line #18
        1 /
        (@p2 - 2
        );
END;

这有点耗时和烦人。理想情况下,作为Visual Studio用户,我希望具有类似附加到处理过程打破错误功能之类的功能。

我做错了吗?有没有更有效的方法来执行这些重复性任务?

0 个答案:

没有答案