SQL Server 2008 で、トリガーしたクエリをログ テーブルに格納するトリガーを作成することはできますか? 例で説明します:
テーブル TAB1 とログ テーブル LOG があります。TAB1 から行を削除するクエリを実行し、LOG テーブルにそのクエリ (または、TAB1 で削除クエリを実行したユーザーを特定するのに役立つ何か) を作成したいと考えています。
これをどのように達成できるか考えていますか?
SQL Server 2008 で、トリガーしたクエリをログ テーブルに格納するトリガーを作成することはできますか? 例で説明します:
テーブル TAB1 とログ テーブル LOG があります。TAB1 から行を削除するクエリを実行し、LOG テーブルにそのクエリ (または、TAB1 で削除クエリを実行したユーザーを特定するのに役立つ何か) を作成したいと考えています。
これをどのように達成できるか考えていますか?
私の頭に浮かぶ唯一の方法は、 CONTEXT_INFO を介してプロシージャ名を明示的に渡すことです。これはプロシージャに入ります
declare @bin varbinary(128) = (cast(object_name(@@Procid) as varbinary(128))
set context_info @bin
トリガーで使用します
declare @procName as nvarchar(max)
set @procName = cast(context_info() as nvarchar(max))
私はそれを行う他の方法を知りません
編集: tham はあなたにとって興味深いかもしれないと思います