T-SQL代码覆盖工具的可用性

时间:2014-10-22 09:19:25

标签: sql-server-2008 tsql code-coverage

我从项目主管那里得到了一份新任务。我们有code coverage tools用于.NET和JAVA(?)。但是这些工具不适用于SQL覆盖,它将显示存储过程的流程。有没有这样的工具可用,以便我们能够通过所有条件,循环,游标等?我已经提出了添加审计表的建议,以记录存储过程中的步骤。但这不起作用,因为我们的环境中有超过1000个存储过程。

我正在修改我的帖子,以便包含我在SQL事件探查器中添加跟踪所采取的步骤。

CREATE procedure dbo.sp_testtrace(@traceID int)
AS
BEGIN
      --Test Comments Added for the Trace
      DECLARE @pm_value as int
      IF @traceID <= 1
      BEGIN
            Select @pm_value = item_id from item where Item_id = @traceID
            Select 'The TRACE will reach here if the Parameter (@traceID) is Less than or Equal to 1'
      END
      ELSE
      BEGIN
            IF @traceID > 2
            BEGIN
                  Select @pm_value = item_id from RX, item where Item_id = @traceID
                  Select 'The TRACE will reach here if the Parameter (@traceID) is Greater to 2'
            END
            ELSE
            BEGIN
                  Select @pm_value = rx_id from RX where RX_ID = @traceID
                  Select 'The TRACE will reach here if the Parameter (@traceID) is Equal to 2'
            END
      END
      Select 'Success'
END

GO

1)为Trace添加了一个新表。示例dbo.Trace_rpt

Added a new table for Trace. Example dbo.Trace_rpt

2)在SQL事件探查器中,设置SP:StmtCompleted enter image description here

3)在SQL事件探查器中,设置RPC:已完成 enter image description here

4)通过传递参数2

执行存储过程
Exec sp_testtrace 2

5)可以根据数据库ID和对象ID提取表中的结果。 这里是7和735146210

(Select Object_id (N'sp_testtrace'))
Select * from trace_rpt where databaseID= 7 and ObjectID = 735146210

结果如下:

  

- sp_testtrace IF @traceID&lt; = 1
   - sp_testtrace IF @traceID&gt; 2
   - sp_testtrace从RX中选择@pm_value = rx_id,其中RX_ID = @traceID
   - sp_testtrace选择&#39;如果参数(@traceID)等于2&#39; TRACE将到达此处    - sp_testtrace选择&#39;成功&#39;

但它没有给我关于我通过的参数的信息(这里是2 )。 请通过提出您的宝贵意见来帮助我。

0 个答案:

没有答案