DDL 트리거는 다양한 형태로 작성될 수 있습니다.
테이블의 DROP 및 ALTER 작업에 대하여 DDL 트리거 생성하기 |
USE AdventureWorks; GO IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = 0 AND name = 'safety') DROP TRIGGER safety ON DATABASE; GO CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT '테이블을 변경/삭제하려면 “safety” 트리거를 비활성화 하세요.' ROLLBACK; GO -- safety라는 DDL 트리거를 비활성화합니다. DISABLE TRIGGER safety ON DATABASE; GO -- safety라는 DDL 트리거를 활성화합니다. ENABLE TRIGGER safety ON DATABASE; GO |
AdventureWorks 데이터베이스 내의 모든 DDL 문에 대하여, 사용 기록 남기기 |
USE AdventureWorks; GO CREATE TABLE ddl_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100), TSQL nvarchar(2000)); GO CREATE TRIGGER log ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS AS DECLARE @data XML SET @data = EVENTDATA() INSERT ddl_log (PostTime, DB_User, Event, TSQL) VALUES (GETDATE(), CONVERT(nvarchar(100), CURRENT_USER), @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'), @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ; GO --생성한 트리거 테스트 CREATE TABLE TestTable (a int); ?임시 테이블을 생성 DROP TABLE TestTable ; --생성한 임시 테이블 삭제 GO --DDL 로그 확인 SELECT * FROM ddl_log ; GO --트리거 삭제 DROP TRIGGER log ON DATABASE GO --ddl_log 테이블 삭제 DROP TABLE ddl_log GO |
'연구개발 > SQL2005' 카테고리의 다른 글
[SQL 2005 GUIDE] 관리자 전용 연결 (DAC) (0) | 2009.07.21 |
---|---|
[SQL 2005 GUIDE] DDL 트리거 정보 확인하기 (0) | 2009.07.21 |
[SQL 2005 GUIDE] DDL 트리거 (0) | 2009.07.21 |
[SQL 2005 GUIDE] 에이전트 오류 로그 확인하기 (0) | 2009.07.21 |
[SQL 2005 GUIDE] 이벤트 뷰어 모니터링하기 (0) | 2009.07.21 |