Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ddl тритггер  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Сделал триггер:
+
CREATE DATABASE ddl_test
GO

USE ddl_test
GO

CREATE TABLE [dbo].[ddl_log](
	[TextData] [varchar](max) NULL,
	[Data] [datetime] NULL,
	[UserName] [varchar](255) NULL,
	[ServerName] [varchar](255) NULL,
	[DBName] [varchar](255) NULL,
	[ObjectName] [varchar](255) NULL,
	[ObjectType] [varchar](50) NULL,
	[EventType] [varchar](100) NULL,
	[LogID] [int] IDENTITY(1,1) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[LogID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE TRIGGER [ddl_trig]
ON ALL SERVER
WITH EXECUTE AS CALLER
FOR DDL_EVENTS
AS 	

	SET NOCOUNT ON;
	
	BEGIN
		INSERT INTO ddl_test.dbo.ddl_log(Textdata,ServerName,DBName,ObjectName,ObjectType,EventType)
		SELECT	TextData=EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)'),
				ServerName=EVENTDATA().value('(/EVENT_INSTANCE/ServerName)[1]','nvarchar(255)'),
				DBName=EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(255)'),
				ObjectName=EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(255)'),
				ObjectType=EVENTDATA().value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(50)'),
				EventType=EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(50)')	
	END
GO


Отсылаю команду
ALTER DATABASE ddl_test SET PAGE_VERIFY NONE

В логе ничего нет.
Если делать альтер хранимок и т.п. database-level события - всё записывается.

Где туплю?

SELECT @@VERSION
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
8 сен 14, 16:37    [16550847]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Server Scope Events
8 сен 14, 16:42    [16550877]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Maxx
Server Scope Events

Скорее здесь больше пользы будет
Группы
8 сен 14, 16:46    [16550896]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Maxx
Maxx
Server Scope Events

Скорее здесь больше пользы будет
Группы
ииии?
DDL_EVENTS включает в себя всё подряд же? В том числе ALTER_DATABASE
8 сен 14, 16:49    [16550914]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Гадя Петрович,

по идее должнео входить сюда DDL_DATABASE_EVENTS (Группа)
Когда то решал ,если память не изменяет - выгрущзкой евентдаты в хмл и потом искал.. чет мне по памяти там все не савсенм прямолинейно было....
8 сен 14, 16:53    [16550942]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Maxx
Гадя Петрович,

по идее должнео входить сюда DDL_DATABASE_EVENTS (Группа)
Когда то решал ,если память не изменяет - выгрущзкой евентдаты в хмл и потом искал.. чет мне по памяти там все не савсенм прямолинейно было....
DDL_EVENTS родитель для DDL_SERVER_LEVEL_EVENTS и DDL_DATABASE_LEVEL_EVENTS
пробовал их обе указывать, тоже не проканало
8 сен 14, 16:58    [16550962]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Гадя Петрович,

попробуйте выгрузить всю evendate() и посмотреть ее.. там помоему не все так прямолинейно было ...
8 сен 14, 17:00    [16550970]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Maxx
Гадя Петрович,

попробуйте выгрузить всю evendate() и посмотреть ее.. там помоему не все так прямолинейно было ...
как же я её выгружу, если триггер не срабатывает?
8 сен 14, 17:06    [16550994]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
А если пойти от простого савсем

CREATE TRIGGER [ddl_trig]
ON ALL SERVER
FOR DDL_EVENTS
AS 	

	SET NOCOUNT ON;
              declare @textData xml
	
	BEGIN

	set @TextData=EVENTDATA()
	END


сработает ?
8 сен 14, 17:21    [16551076]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Maxx
CREATE TRIGGER [ddl_trig]
ON ALL SERVER
FOR DDL_EVENTS
AS 	

	SET NOCOUNT ON;
              declare @textData xml
	
	BEGIN
              print 'XXXXX'
	set @TextData=EVENTDATA()
              select @TextData
	END
8 сен 14, 17:22    [16551081]     Ответить | Цитировать Сообщить модератору
 Re: ddl тритггер  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
всё, нашел где затуплял :)
Maxx, спасибо
8 сен 14, 17:32    [16551143]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить