ストアドプロシージャの実行中に現在のすべての変数値のリストを出力できますか?バッチ/ストアドプロシージャTSQLの実行内でスコープ付き変数値を出力する
コンテキストのために、ストアドプロシージャがエラーをスローしてトラブルシューティングを行う際にどのような変数値が使用されているかがわかります。もちろん、このロギングをハードコードされた変数値とともに手動でcatchブロックに入れることはできますが、それはクリーンでも転送可能でもありません。
動的SQLは機能しないため、sys.parametersを使用することはできません(パラメータを指定しても使用できません)。実行中に出力される可能性のある現在のスコープの変数を格納する変数またはsysテーブルが組み込まれていますか?
BEGIN TRY
DECLARE @Variable1 VARCHAR(64) = 'test'
-- Do stuff
END TRY
BEGIN CATCH
EXEC SpCustomLog @VariableValues = @Variable1 -- hardcoded
EXEC sp_execute 'SELECT @Variable1' -- not in scope/lost in build
END CATCH
AFAIK、これはT-SQLでは実行できません。私は、他のプログラミング言語でどのように現在のスコープ内のすべての変数を総括的に記録するのか不思議です。 –