2

入力パラメーターの値をログに記録できるように、ストアド プロシージャ用の汎用ログ ソリューションを作成したいと考えています。現在、私はこれを多かれ少なかれ手作業で行っていますが、このアプローチには非常に不満です。理想的には、次のようなことを言いたいと思います。

「私の spid が与えられた場合、入力パラメーターとその値は何ですか?」

これは、SQL プロファイラーを実行したときに表示される情報と同じです。ストアド プロシージャの名前、すべての入力パラメーター、およびすべての入力値が一覧表示されます。ストアド プロシージャ内からこれらの値を取得するにはどうすればよいですか?

ありがとう; ダンカン

4

1 に答える 1

0

これをストアド プロシージャ内で行うのは困難です。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 サーバーが、別の SPID でバッチを実行するための T-SQL コンストラクトを提供しているとは思えません。別の接続でバッチを実行する .Net dll ストアド プロシージャを作成できると思います。そのようなことをすることは価値があるよりも面倒かもしれません.

于 2010-05-17T22:07:28.450 に答える