有没有地方可以找到用于 运行 存储过程的参数值?

Is there a place to find the parameter values used to run a stored procedure?

我刚刚被要求测试 200 多个存储过程(在 DML 更改和重新编译之后)以确保它们在没有实施单元测试的数据库中工作。

因为我不知道所有这些存储过程的 "appropriate" 输入是什么,所以我想知道是否有 运行 过程的日志以及用于运行 他们。

如果不是,是否有一种方法可以在不知道其参数的有效输入是什么的情况下测试一堆程序?

或者我要了解为什么系统应该从系统开始就包含测试?

谢谢

我认为您无法从 sys tables 之类的地方或其他地方获取此信息。您可以做的一件事是使用 SQL Server ProfilerExtended Events。这样您就可以捕获所有带有您需要的参数的过程调用。

原来我没能从数据库中得到我希望得到的信息。 因此,我创建了一个执行列表,其中包含我可以使用以下参数找到的所有存储过程和函数:

DECLARE @NAME NVARCHAR(100) =NULL, @SPECIFIC NVARCHAR(100), @PARAMETER NVARCHAR(500)
DECLARE @LISTING NVARCHAR(MAX) =''

DECLARE PARAM_CURSOR INSENSITIVE CURSOR FOR
       SELECT  SPECIFIC_NAME, PARAMETER_NAME
       FROM    INFORMATION_SCHEMA.PARAMETERS
       where SPECIFIC_NAME in (
                                select OBJECT_NAME(object_id) name
                                from sys.objects
                                where (OBJECT_DEFINITION(object_id) LIKE 'whatever you''re querying'
                                )
                    )
OPEN PARAM_CURSOR   
FETCH NEXT FROM PARAM_CURSOR INTO @SPECIFIC, @PARAMETER 

WHILE @@FETCH_STATUS = 0
BEGIN
       IF @NAME = @SPECIFIC 
             SET @LISTING = @LISTING + ',' + @PARAMETER
       ELSE 
             BEGIN
             SET @NAME = @SPECIFIC
             SET @LISTING = @LISTING + CHAR(13)+CHAR(10)+ 'EXEC '+@NAME+' '+@PARAMETER
             END
       IF LEN(@LISTING) > 3000 
             begin
             PRINT @LISTING
             set @listing = ''
             end        
       FETCH NEXT FROM PARAM_CURSOR INTO @SPECIFIC, @PARAMETER 
END
PRINT @LISTING
close PARAM_CURSOR
DEALLOCATE PARAM_CURSOR   

然后我创建了一个包含所有常用参数的列表,并找出适合每个参数的值。 显然这并不理想,但由于找不到其他方法,我不得不手动做一些事情。

希望这对以后的其他人有所帮助!

谢谢