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
0 B
|👍
/👎
0 B
|👍
/👎