0
나는 방아쇠를 만들었고 누가 그 기록을 삭제했는지 알아내는 방법이 있는지 궁금해하고 있었다.방아쇠를 선택하십시오. 삭제 된 사람 찾기?
트리거 나 USER_NAME() 또는 USER에서 SUSER_NAME()을 사용하면 SQL 로그인 ID 만 얻습니다. 트리거는 사용자 정의 할 수있는 .net 백엔드가있는 다른 소프트웨어에서 활성화됩니다.
USE JM_SB
GO
ALTER TRIGGER Sales_Update
ON Sales
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Action VARCHAR(30)
DECLARE @UNAME VARCHAR(30)
IF UPDATE(PartGroupID)
BEGIN
SET @Action = 'Updated Part Group'
/* All this does is get dbo */
Set @UNAME = (Select USER From Deleted)
INSERT INTO Sales_AuditTrail(Action, SalesID, OldValue,
NewValue, SalesDivision, UpdateDate, UpdatedUser)
SELECT @Action, i.SalesID, d.PartGroupID, i.PartGroupID,
i.SalesDivision, Current_Timestamp As UpdateDate, @UNAME
FROM Inserted i
INNER JOIN Deleted d ON i.SalesID = d.SalesID
END
END;
GO
삭제되거나 삽입 된 테이블에 레코드를 업데이트 한 사람을 알고 있습니까? dbo 또는 sa 대신 ... 업데이트를 실행하는 소프트웨어에서 내 사용자 이름 (예 : "jmadmin")
나는 의심 스럽다. 데이터베이스는 누가 데이터베이스에 로그인했는지 추적합니다. 소프트웨어 시스템 자체가 개별 사용자를 추적 할 수 있습니다. –
나는 그것이 긴 총일 것 같은 느낌이 들었다. 아마도 어쩌면 lol – mrmcg
바라고 있었을 것입니다. 열이 udpate 문의 일부인 경우 UPDATE 함수는 참으로 평가됩니다. 삽입 된 값과 삭제 된 값이 다른지는 평가하지 않습니다. 아마도 UPDATE 함수를 건너 뛰고 i.PartGroupID <> d.PartGroupID를 where의 삽입 술어로 포함시킵니다. –