0

外部パラメーターを受け入れるトリガーを作成することはできますか?

履歴データを保存する際に、更新操作を行ったアプリケーション ユーザー名を保存したいと考えています。使用しようと思ったUser_Name()のですが、アプリケーション ユーザーではなく、データベース ユーザーのみが返されることがわかりました。

したがって、アプリケーション ユーザーの ID をこのトリガーに渡すことができるように、外部パラメーターを使用してトリガーを作成するための提案を探しています。自分のニーズを明確に説明したと思います。前もって感謝します !

ここに私が試した私のコードがあります....

ALTER TRIGGER [dbo].[Audit]
ON [dbo].[MIS_Opus] FOR UPDATE  
AS  
BEGIN  
SET NOCOUNT ON;  
DECLARE @d DATETIME = GETDATE(), @u SYSNAME = SUSER_SNAME();  
Insert into dbo.MIS_OpusAuditTrigger  
(  
OpusId, Category, ProcessName, DOP, RampupCode, _Count, TimeTaken, Remarks, Audit_Action,    Audit_Timestamp, Changed_By  
)  
SELECT   
       OpusId,  
       Category,  
       ProcessName,  
       DOP,   
       RampupCode,   
       _Count,   
       TimeTaken,  
       Remarks,  
       'before update',  
       @d,  
       @u  
    FROM deleted -- <--- ****** deleted ******   
  UNION ALL   
  SELECT   
      OpusId,  
       Category,   
       ProcessName,   
       DOP,  
       RampupCode,  
       _Count,   
       TimeTaken,   
       Remarks,   
       'After update',   
       @d,   
       @u   
    FROM inserted;  
END  

上記のコードでは、データベースのユーザー ID のみが保存されています。更新操作を行ったユーザーの ID を保存する必要があります。MSSQL サーバー 2012 を使用しています。方法を教えてください...

4

3 に答える 3

0

多分これが役立つでしょう。「Application Name=MyAppName;」を含めることができます。接続文字列で。その後、次のコマンドを使用して、SQL バッチまたは SPROC でその値を使用することもできます。

SELECT APP_NAME();
于 2014-06-13T08:50:22.553 に答える
0

context_info 変数を使用して、アプリケーションからアプリケーション ユーザー情報を渡し、それをトリガーで使用できます。

于 2014-06-13T07:57:14.240 に答える