我从项目主管那里得到了一份新任务。我们有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
2)在SQL事件探查器中,设置SP:StmtCompleted
3)在SQL事件探查器中,设置RPC:已完成
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 )。 请通过提出您的宝贵意见来帮助我。