Hi I wrote a DDL Trigger . I checked in with sysadmin user. I Worked. But with a user on Specific Database generate an error . (about permission)[quote]VIEW SERVER STATE permission was denied on object 'server', database 'master'.Msg 297, Level 16, State 1, Procedure DDLTrigger_LogAll_DDLChanges_ToDataBase, Line 20The user does not have permission to perform this action.[/quote]what is the Problem ? This is my DDL Trigger : [code="sql"]Alter TRIGGER [DDLTrigger_LogAll_DDLChanges_ToDataBase] ON DATABASE with execute as 'dbo' FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,ALTER_TABLE, DROP_TABLE, ALTER_INDEX, DROP_INDEX,CREATE_Function, ALTER_Function, DROP_Function, ALTER_VIEW, DROP_VIEW, ALTER_TRIGGER, DROP_TRIGGERASBEGIN SET NOCOUNT ON; DECLARE @EventData XML = EVENTDATA(); DECLARE @ip VARCHAR(32) = ( SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID ); INSERT DB_DBA.dbo.DDLEvents ( EventType, EventDDL, EventXML, DatabaseName, SchemaName, ObjectName, HostName, IPAddress, ProgramName, LoginName ) SELECT @EventData.value('(/EVENT_INSTANCE/EventType)[1]', 'NVARCHAR(100)'), @EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'NVARCHAR(MAX)'), @EventData, DB_NAME(), @EventData.value('(/EVENT_INSTANCE/SchemaName)[1]', 'NVARCHAR(255)'), @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]', 'NVARCHAR(255)'), HOST_NAME(), @ip, PROGRAM_NAME(), SUSER_SNAME();END[/code]
↧