【问题标题】:How to capture input parameters from within stored procedure (SQL Server 2005)?如何从存储过程(SQL Server 2005)中捕获输入参数?
【发布时间】:2010-05-17 21:55:06
【问题描述】:

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

“给定我的 spid,我的输入参数和它们的值是什么?”

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

谢谢; 邓肯

【问题讨论】:

    标签: stored-procedures logging input-parameters


    【解决方案1】:

    在存储过程中很难做到这一点。 SQL 探查器在不同的 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 的存储过程中运行它,您将得到的只是上面的语句。我不相信 SQL 服务器提供了一个 T-SQL 构造来在不同的 SPID 下执行批处理。我想您可以编写一个在不同连接上执行批处理的.Net dll 存储过程。做那种事,但它可能比它的价值更麻烦。

    【讨论】:

    • 是的,这是我的第一个方法。如果可能的话,我想在不求助于 CLR 的情况下做到这一点。
    猜你喜欢
    • 2014-05-16
    • 2016-11-02
    • 2015-06-12
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多