0

ストアド プロシージャを呼び出して、いくつかのパラメータを送信しているとします。ストアド プロシージャはテーブルを更新し、そのテーブルにはトリガーがあります。そのため、ストアド プロシージャがテーブルを更新するとき、テーブルを更新しているユーザーが必要ですが、SQL サーバーのユーザー名を使用していませんが、テーブルを更新する SP にユーザー名を送信します。したがって、更新前に、そのユーザー名をローカル一時テーブルに保存し、トリガーからそのローカル一時テーブルにクエリを実行して、そのユーザー名を取得できます。それが可能であることを願っていますが、この仕事を達成するための他の良い選択肢が欲しいです。アイデアを共有してください。ありがとう

4

1 に答える 1

0

SET CONTEXT_INFOを使用して、プロシージャ内のユーザー名をセッションにエンコードできます。これは、トリガーでCONTEXT_INFO によって読み取ることができます。

これは並行性に対して安全です。各セッション/呼び出しは他のセッションから分離されています。
また、一時テーブルなどは必要ありません。

DECLARE @context varbinary(100) = CAST('foobar' AS varbinary(100));

SET CONTEXT_INFO @context;

SELECT CAST(CONTEXT_INFO() AS varchar(100));
于 2013-01-17T08:07:27.350 に答える