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