1

AFTER INSERT, DELETE, UPDATEトリガーを使用して、データベースの 1 つに対する変更をキャプチャすることを検討しています。私が欲しいのは、変更を行ったユーザーの名前を取得することです。

SUSER_SNAME()専用の SQL アカウントを使用して (ASP.NET MVC から) データベースに接続しているため、正確な情報が得られるとは思えません。

とにかく、ASP.NET MVC 側からユーザー名をトリガーにフィードする方法はありますか?

ASP.NET 側は、Active Directory に対する Windows 認証用に構成されています。

4

2 に答える 2

3

Set Context_Infoを見てください。私は過去にSQL認証を監査して使用するときにこれをうまく使用しました。ログオンしたユーザーをコンテキストに設定し、DB トリガーでコンテキストからこの情報を取得して DB に保存するという考え方です。コンテキストでユーザーを設定するのを忘れた場合は、いつでも suser_name にフォールバックできます (ただし、監査にはあまり役立ちませんが、SSMS で直接変更を加える場合には役立ちます)。Google の「Audit Trail Set Context_Info」で検索すると、いくつかの例が見つかります。

これとこれように

于 2011-06-29T16:13:11.707 に答える
0

を使用Thread.CurrentPrincipalして Windows アカウントを取得し、これをパラメーターとしてクエリに渡すことができるため、トリガーで使用できます。

 var userName = Thread.CurrentPrincipal.Identity.Name;
于 2011-06-29T15:44:17.250 に答える