사용자 만들기를 추적하려고합니다. 많은 게시물에서 DDL 트리거를 살펴 봤지만 사용자가 아닌 개체를 추적하는 것만 보입니다. SQL Server에서 사용자를 만들거나 삭제할 때 추적/기록 할 수있는 방법이 있습니까?SQL Server 트랙 DDL 만들기 사용자
4
A
답변
6
CREATE_USER
is absolutely a trackable DDL event은 DROP_USER
이고, 둘 다 SQL Server 2005 이후였습니다. BOL is hard-pressed for decent examples, though. 진실은 DDL 트리거 eventdata 스키마가 항상 원하는 방식으로 명명 된 엔티티 (예 : UserName
)를 가질만큼 충분히 융통성이 없다는 것입니다. 그것은 직관적이지, 그리고 당신의 혼란의 원인이 될 수 있지만, 실제로 ObjectName
에서 생성 된 사용자의 이름을 당겨해야합니다
USE [your_database_name];
GO
CREATE TRIGGER CatchUser
ON DATABASE
FOR CREATE_USER, DROP_USER
AS
BEGIN
SET NOCOUNT ON;
DECLARE @x XML = EVENTDATA();
-- INSERT dbo.LoggingTable(Columns)
SELECT
EventType = @x.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(256)'),
UserName = @x.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(256)'),
LoginName = @x.value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(512)'),
StartTime = @x.value('(/EVENT_INSTANCE/PostTime)[1]', 'datetime');
END
, 당신은 단지 사실 후이 데이터를 감사하려는 경우, 자주 폴링하면 기본 추적에서이 정보를 가져올 수도 있습니다.
DECLARE @path NVARCHAR(260);
SELECT @path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces WHERE is_default = 1;
SELECT EventType = CASE EventSubClass WHEN 3 THEN 'CREATE_USER'
WHEN 4 THEN 'DROP_USER' END, TargetUserName, LoginName, StartTime
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 109 -- Create DB User Event
AND DatabaseName = N'your_database_name'
ORDER BY StartTime DESC;
이 얻을 것이다이 추가 및 삭제, 당신은 그것이 어떤의 이벤트 EventSubClass
에서 말할 수 있어야하고 있지만 내 경험이 the documentation와 일치하지 않습니다 - 나는 3 드롭에 대한 추가, 4 얻을 그러나 그들은 1이 Add이고, 2가 Drop이고, 3이 grant access이고, 4가 revoke access라고합니다. 어깨동구
관련 문제
- 1. .Net SQL Server DDL API
- 2. SQL Server : 트랙 테이블 삽입
- 3. SQL Server 2012 SQL 쿼리에서 사용자 만들기
- 4. SQL Server DDL 변경 (열 이름, 유형)
- 5. SQL Server DDL 코드 버전 관리
- 6. SQL Server 사용자 만들기 (Windows 및 SQL Server 인증)
- 7. DDL 스크립트에서 데이터베이스 만들기
- 8. SQL DDL : 재귀 테이블 만들기 (MySQL)
- 9. 응용 프로그램에 대한 SQL Server 사용자 만들기
- 10. DDL 변환, 다 대다 관계 및 SQL Server 2008
- 11. 생성 SQL DDL
- 12. Python에서 SQL Server 데이터베이스 만들기
- 13. 특정 스키마에 대한 사용자 DDL 권한 부여
- 14. SQL Server 2005 인스턴스의 모든 데이터베이스에 DDL 트리거를 만드는 방법
- 15. "SELECT"문에 대한 SQL Server DDL 트리거를 만들 수 있습니까?
- 16. ddl 파일에서 하이브에 테이블 만들기
- 17. 테이블 만들기 Microsoft Access에서 DDL
- 18. SQL Server 사용자 인스턴스
- 19. SQL Server 2008에서 트리거 만들기
- 20. SQL Server 2005에서 차이점 만들기
- 21. SQL Server 데이터베이스의 백업 만들기
- 22. SQL Server : 곱하기 테이블 만들기
- 23. SQL Server 2005에서 데이터베이스 만들기
- 24. SQL Server 2005에서 작업 만들기
- 25. PL/SQL DDL 즉시 실행
- 26. SQL 2008 FTS 트랙 변경
- 27. SQL Server 2008에서 SQL Server 2000과 호환되는 스크립트 만들기
- 28. SQL Server 2008을 사용하여 SQL Server 2000 데이터베이스 만들기
- 29. SQL Server 2008 데이터베이스 만들기 문제
- 30. DDL 명령 사용 Oracle 용 iBatis로 사용자 만들기