データベースへのすべての変更をログに記録しようとしていますが、トリガーへの現在のユーザー名を取得する方法を見つけることができませんでした。ユーザーがサインインするときに挿入されるtriggerData
ユーザーの情報を格納するテーブルがあります
。(guid (userid), data (username), logintime)
これがトリガーです
declare @UserIsOnlineTimeWindow DateTime
declare @currenttime DateTime
set @currenttime = GETDATE()
set @UserIsOnlineTimeWindow = 10
DECLARE @uname nvarchar(max)
**set @uname = (SELECT T.UserName from (SELECT distinct u.UserName FROM aspnet_Users u
WHERE IsAnonymous = 'FALSE' AND ((@currenttime - @UserIsOnlineTimeWindow) < u.LastActivityDate)) as t,
TriggerData td, aspnet_Users au
WHERE t.UserName = td.Data and td.guid = au.UserId and td.logintime = (select MAX(td.logintime) from TriggerData td))**
DECLARE @ComputerName nvarchar(50)
DECLARE @IPAddr nvarchar(50)
DECLARE @BroadcastIP nvarchar(50)
DECLARE @auditInsert nvarchar(255)
SET @ComputerName = (SELECT ComputerName FROM inserted)
SET @IPAddr = (SELECT ISNULL(IPAddr,0) FROM inserted)
SET @BroadcastIP = (SELECT ISNULL(BroadcastIP,0) FROM inserted)
SET @auditInsert = @ComputerName+' '+@IPAddr+' '+@BroadcastIP
Begin
INSERT INTO Audit(OldInfo ,NewInfo,[User],Date1,Type,TableName) VALUES('New Record',@auditInsert, @uname ,GETDATE(),'Added','LabIP')
End
ユーザー名のクエリは、現在変更中のユーザーを提供するのではなく、最近ログインしたユーザーを提供します。どんな助けでも大歓迎です。ありがとう!