SQL Server 2005 데이터베이스의 각 사용자에 대한 마지막 로그인 시간을 추적해야합니다.SQL Server 2005의 로그온 트리거에 대한 모든 서버에 대한 사용 권한을 설정할 위치
CREATE TRIGGER LogonTimeStamp
ON ALL SERVER FOR LOGON
AS
BEGIN
IF EXISTS (SELECT * FROM miscdb..user_last_login WHERE user_id = SYSTEM_USER)
UPDATE miscdb..user_last_login SET last_login = GETDATE() WHERE user_id = SYSTEM_USER
ELSE
INSERT INTO miscdb..user_last_login (user_id,last_login) VALUES (SYSTEM_USER,GETDATE())
END;
go
이 트리거 시스템 관리자 인 사용자를 위해 작동하지만 일반 사용자가 로그인을 허용하지 않습니다 :
는이 같은 트리거를 만들었습니다. 내가 공개 선택, 삽입 및 테이블에 업데이 트를 부여했지만 그게 문제가되지 않습니다. 트리거에 대한 사용 권한을 설정하는 방법이 있습니까? 내가 놓친 다른 것이 있습니까?편집
Logon failed for login 'xxxx' due to trigger execution.
Changed database context to 'xxxx',
Changed language setting to us_english. (Microsoft SQL Server, Error: 17892).
감사 :
일반 사용자는 오류 메시지가 우리는이 활성 디렉토리 계정이 아닌 SQL 계정에 대해 발생하는 것으로 나타났습니다. 예를 들어
: 모든
C:\>osql -S server -E
Logon failed for login 'xxx\xxxx' due to trigger execution.
C:\>osql -S server -U xxxx
Password:
1>
문제는 데이터베이스에 로그인으로 모든 사용자가 사용자 없다는 것이다 CREATE miscdb 데이터베이스에서. miscdb에있는 사용자가 아닌 경우 로그인 할 수 없습니다. 필요한 데이터베이스에 추가 할 때이 데이터베이스에 사용자를 추가하는 것을 기억하고 싶지는 않습니다. 서버의 모든 로그인에 권한을 부여하는 방법이 있습니까? – Jay