bisonn icon

Untitled

bisonn | PRO | 11/20/19 02:01:46 PM UTC | 0 ⭐ | 6644 👁️ | Never ⏰ | []
T-SQL |

2.22 KB

|

None

|

0 👍

/

0 👎

USE [stat]
 
CREATE TABLE [dbo].[ddl](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [EventType] [varchar](1000) NULL,
    [PostTime] [datetime] NULL,
    [SPID] [int] NULL,
    [ServerName] [varchar](1000) NULL,
    [LoginName] [varchar](1000) NULL,
    [UserName] [varchar](1000) NULL,
    [Host] [varchar](1000) NULL,
    [Program] [varchar](1000) NULL,
    [DatabaseName] [varchar](1000) NULL,
    [SchemaName] [varchar](1000) NULL,
    [ObjectName] [varchar](1000) NULL,
    [ObjectType] [varchar](1000) NULL,
    [x] [xml] NULL,
    [CommandText] [nvarchar](max) NULL,
 CONSTRAINT [PK_ddl] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
 
USE [master]
GO
 
CREATE trigger [ddl_stat] on all server for
    CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
    CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION, 
    CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER, 
    CREATE_TABLE, ALTER_TABLE, DROP_TABLE, 
    CREATE_INDEX, ALTER_INDEX, DROP_INDEX,
    CREATE_VIEW, ALTER_VIEW, DROP_VIEW,
    CREATE_USER, ALTER_USER, DROP_USER,
    CREATE_ROLE, ALTER_ROLE, DROP_ROLE, ADD_ROLE_MEMBER, DROP_ROLE_MEMBER,
    RENAME
as begin
 
    if suser_name() = 'KUPIVIP\sqlagt' return
 
    set nocount on 
    declare @x xml = eventdata()
 
    if is_member('sv_dev')=1 and @x.value('(/EVENT_INSTANCE/SchemaName)[1]',  'varchar(1000)') <> 'sv' begin
        print 'Вам нельзя менять объекты базы'
        rollback
    end
 
    insert stat..ddl(EventType,PostTime,SPID,ServerName,LoginName,UserName,Host,Program,DatabaseName,SchemaName,ObjectName,ObjectType,CommandText,x) 
    select 
    @x.value('(/EVENT_INSTANCE/EventType)[1]',   'varchar(1000)'),
    getdate(),
    @@spid,
    @@servername,
    suser_name(),
    user_name(),
    host_name(),
    app_name(),
    @x.value('(/EVENT_INSTANCE/DatabaseName)[1]',  'varchar(1000)'),
    @x.value('(/EVENT_INSTANCE/SchemaName)[1]',  'varchar(1000)'),
    @x.value('(/EVENT_INSTANCE/ObjectName)[1]',  'varchar(1000)'),
    @x.value('(/EVENT_INSTANCE/ObjectType)[1]',  'varchar(1000)'),
    @x.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',  'nvarchar(max)'),
    @x
end
GO
 
ENABLE TRIGGER [ddl_stat] ON ALL SERVER
GO

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎