The meta data is from an SQL 2012 Server.
I have posted alot more, find the whole list here.
Goto Definition or MetaData
Definition:
sys.sp_syspolicy_update_ddl_trigger()MetaData:
CREATE PROCEDURE sys.sp_syspolicy_update_ddl_trigger
AS
IF (msdb.dbo.fn_syspolicy_is_automation_enabled() = 0)
BEGIN
RETURN;
END
DECLARE @event_list nvarchar(max)
SET @event_list = N''
CREATE TABLE #temp_events (event_name sysname COLLATE database_default)
-- pick up all the events on policies that have to be enforced
INSERT #temp_events
SELECT DISTINCT fe.event_name COLLATE database_default
FROM msdb.dbo.syspolicy_policies pi
INNER JOIN msdb.dbo.syspolicy_conditions_internal c ON pi.condition_id = c.condition_id
INNER JOIN msdb.dbo.syspolicy_facet_events fe ON c.facet_id = fe.management_facet_id
INNER JOIN sys.event_notification_event_types ent ON fe.event_name = ent.type_name COLLATE database_default
WHERE (pi.execution_mode & 1) = 1 AND pi.is_enabled = 1 AND ent.type < 1000 AND
EXISTS (SELECT * FROM msdb.dbo.syspolicy_object_sets_internal os WHERE os.object_set_id = pi.object_set_id)
-- create a cursor so that we can transform the table into a list
DECLARE event_cursor CURSOR LOCAL FOR
SELECT event_name FROM #temp_events
DECLARE @event_name sysname
OPEN event_cursor
FETCH NEXT FROM event_cursor INTO @event_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @event_list = @event_list + @event_name + ','
FETCH NEXT FROM event_cursor INTO @event_name
END
CLOSE event_cursor
DEALLOCATE event_cursor
DROP TABLE #temp_events
-- take out the last comma
IF( LEN(@event_list) > 0)
SET @event_list = SUBSTRING(@event_list, 1, LEN(@event_list)-1)
-- no more events to read means we drop the trigger
IF(LEN(@event_list)=0)
BEGIN
IF EXISTS (SELECT * FROM sys.server_triggers WHERE name = N'syspolicy_server_trigger')
DROP TRIGGER [syspolicy_server_trigger] ON ALL SERVER
RETURN (0)
END
DECLARE @mode nvarchar(20)
IF EXISTS (SELECT * FROM sys.server_triggers WHERE name = N'syspolicy_server_trigger')
SET @mode = N' ALTER '
ELSE
SET @mode = N' CREATE '
DECLARE @statement nvarchar(max)
SET @statement = @mode + N'TRIGGER [syspolicy_server_trigger] ON ALL SERVER
WITH EXECUTE AS ''##MS_PolicyEventProcessingLogin##''
FOR ' + @event_list + '
AS
BEGIN
DECLARE @event_data xml
SELECT @event_data = EVENTDATA()
EXEC [msdb].[dbo].[sp_syspolicy_dispatch_event] @event_data = @event_data, @synchronous = 1
END'
EXEC sp_executesql @statement
RETURN (0)
No comments:
Post a Comment