Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 如何从存储过程(SQLServer2005)中捕获输入参数?_Stored Procedures_Logging_Input Parameters - Fatal编程技术网

Stored procedures 如何从存储过程(SQLServer2005)中捕获输入参数?

Stored procedures 如何从存储过程(SQLServer2005)中捕获输入参数?,stored-procedures,logging,input-parameters,Stored Procedures,Logging,Input Parameters,我想为我的存储过程创建一个通用的日志记录解决方案,允许我记录输入参数的值。目前我差不多是手工做的,我对这种方法很不满意。理想情况下,我想说以下几点: “给定spid,我的输入参数及其值是什么?” 这与运行SQL Profiler时暴露给我的信息相同——存储过程的名称、所有输入参数和所有输入值都为我列出。如何从存储过程中获得这些值 谢谢,; Duncan在存储过程中很难做到这一点。SQL profiler在不同的SPID下运行,并运行如下语句来捕获其他用户语句: DECLARE @handle V

我想为我的存储过程创建一个通用的日志记录解决方案,允许我记录输入参数的值。目前我差不多是手工做的,我对这种方法很不满意。理想情况下,我想说以下几点:

“给定spid,我的输入参数及其值是什么?”

这与运行SQL Profiler时暴露给我的信息相同——存储过程的名称、所有输入参数和所有输入值都为我列出。如何从存储过程中获得这些值

谢谢,;
Duncan

在存储过程中很难做到这一点。SQL profiler在不同的SPID下运行,并运行如下语句来捕获其他用户语句:

DECLARE @handle VARBINARY(64)
SELECT @handle = sql_handle from sys.sysprocesses where spid = @SPID
SELECT text FROM sys.dm_exec_sql_text(@handle)

问题是,如果您在当前SPID的存储过程中运行它,那么您将得到的只是上面的语句。我不相信SQLServer提供了一个t-SQL构造来在不同的SPID下执行批处理。我想您可以编写一个.NETDLL存储过程,在不同的连接上执行批处理。但这可能比它的价值更麻烦。

在存储过程中很难做到这一点。SQL profiler在不同的SPID下运行,并运行如下语句来捕获其他用户语句:

DECLARE @handle VARBINARY(64)
SELECT @handle = sql_handle from sys.sysprocesses where spid = @SPID
SELECT text FROM sys.dm_exec_sql_text(@handle)

问题是,如果您在当前SPID的存储过程中运行它,那么您将得到的只是上面的语句。我不相信SQLServer提供了一个t-SQL构造来在不同的SPID下执行批处理。我想您可以编写一个.NETDLL存储过程,在不同的连接上执行批处理。去做那种事情,但可能会比它的价值更麻烦。

是的,这是我的第一个方法。如果可能的话,我不想求助于CLR。是的,这是我的第一个方法。如果可能的话,我不想求助于CLR。