저장된 프로 시저가 변경되거나 CREATEd 될 때마다, 나는 그 것을 나중에 트리거하기 위해 캡처하려고합니다.SQL Server : 저장 프로 시저 변경시 트리거를 설정할 수 있습니까?
SQL Server 2008에서이를 수행 할 수 있습니까?
감사합니다. --Beemer
저장된 프로 시저가 변경되거나 CREATEd 될 때마다, 나는 그 것을 나중에 트리거하기 위해 캡처하려고합니다.SQL Server : 저장 프로 시저 변경시 트리거를 설정할 수 있습니까?
SQL Server 2008에서이를 수행 할 수 있습니까?
감사합니다. --Beemer
당신은 ALTER/CREATE/DROP을 ALTER/CREATE/DROP 컨텍스트 withing에 뭔가를 할 (예. 같은 트랜잭션 내부), 심지어 방지하려면 다음 DDL Triggers에 보일 것입니다.
당신이 후 뭔가 을 수행 할 경우, ALTER/별도의 트랜잭션에서/DROP를 생성 한 다음 Event Notifications에 보일 것입니다, 원래의 DDL을 저하없이 약간의 긴 처리를 할 수있는 자유를 가지고있다.
실제로 이벤트 알림을 원격으로 전달할 수 있으므로 전체 회사 그룹의 모든 DDL 이벤트를 하나의 중앙 저장소로 캡처 할 수 있습니다.
CREATE TRIGGER tddl_storedprocevents ON DATABASE FOR CREATE_PROCEDURE,ALTER_PROCEDURE,DROP_PROCEDURE AS INSERT INTO AUDIT_TABLE(EventType, SQLCommand, etc) SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)') , etc /* EVENTDATA() SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/PostTime)[1]', 'datetime') , EVENTDATA().value('(/EVENT_INSTANCE/SPID)[1]', 'nvarchar(4)') , EVENTDATA().value('(/EVENT_INSTANCE/ServerName)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/LoginType)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/SID)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'nvarchar(512)') , EVENTDATA().value('(/EVENT_INSTANCE/IsPooled)[1]', 'nvarchar(1)') etc */ DROP TRIGGER tddl_storedprocevents ON DATABASE
지금까지하지 않은 경우 EVENTDATA()가 반환 한 xml 개체에 대한 설명서를 읽는 것이 좋습니다.
희망이 있습니다.