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

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Здравствуйте.
Столкнулся со следующей проблемой:
Написал триггеры для отображения изменений в каждой базе данных.
Всего баз около 10-ка - все изменения пишутся, НО есть 2 базы с названиями services, procedure у которых не пишутся изменения DDL_TABLE_VIEW_EVENTS, хотя он и прописаны в триггере. Но пишутся изменения при создании/редактировании триггеров.
Как я понял дело в том, что эти базы совпадают со служебными словами словами в sql, поэтому и не пишутся изменения. В самом триггере services, procedure взяты в квадратные скобочки.
Как сделать чтобы изменения DDL_TABLE_VIEW_EVENTS по базам services, procedure отображались???
Возможно еще где-то нужно взять в скобки, а где я ума не приложу, искренне надеюсь на вашу помощь!
15 дек 11, 13:46    [11770818]     Ответить | Цитировать Сообщить модератору
 Re: DDL_TABLE_VIEW_EVENTS для баз services, procedure  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Текст триггера прикладываю

/****** Object:  DdlTrigger [db_DDLtrg_Audit_OLOLO]    Script Date: 12/13/2011 13:13:56 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
 
Create TRIGGER [db_DDLtrg_Audit_OLOLO]
ON DATABASE
FOR
DDL_TABLE_VIEW_EVENTS AS
SET NOCOUNT ON
    If Object_ID('AuditDB.dbo.[Services]') IS NOT NULL
    BEGIN
        DECLARE @Eventdata XML
            SET @Eventdata = EVENTDATA()
 
            INSERT AuditDB.dbo.[Services]
            (EventType,
            EventData,
            ServerLogin,
 
            ObjectName,
            HostName,
 
            DBUser,
            TSQLText)
 
        VALUES
        (   @Eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
            @Eventdata,
            system_USER,
 
            @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]',  'NVARCHAR(255)'),
            HOST_NAME(),
 
            CONVERT(nvarchar(100), CURRENT_USER),
            @Eventdata.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)')
        )
    END
 
GO
 
SET ANSI_NULLS OFF
GO
 
SET QUOTED_IDENTIFIER OFF
GO
 
DISABLE TRIGGER [db_DDLtrg_Audit_OLOLO] ON DATABASE
GO
 
ENABLE TRIGGER [db_DDLtrg_Audit_OLOLO] ON DATABASE
GO
15 дек 11, 14:20    [11771148]     Ответить | Цитировать Сообщить модератору
 Re: DDL_TABLE_VIEW_EVENTS для баз services, procedure  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
1. За Copy-Past отрывают кое-что. Не пложите сущностей понапрасну.
CREATE TRIGGER [db_DDLtrg_Audit_OLOLO] ON ALL SERVER

2. Существование объекта мало, надо ещё права на него иметь
3. Тяп ляп для DDL триггеров более плачевно. Проверяйте ошибки выполнения

Из ваших слов нет ясности. Вот если вы написали: делал ALTER, ошибок нет но илого тоже, тогда да.
+ Контрольный в голову
USE master
GO
CREATE DATABASE [services] ON
	PRIMARY (NAME = N'services'	, FILENAME = N'Z:\Path\services.mdf')
	LOG ON  (NAME = N'services_log'	, FILENAME = N'Z:\Path\services_log.ldf')
GO
CREATE DATABASE [procedure] ON
	PRIMARY (NAME = N'procedure'	, FILENAME = N'Z:\Path\procedure.mdf')
	LOG ON  (NAME = N'procedure_log', FILENAME = N'Z:\Path\procedure_log.ldf')
GO
CREATE TRIGGER [DDLTest] ON ALL SERVER
AFTER DDL_TABLE_VIEW_EVENTS AS
	PRINT Convert(NVarCHar(max),EventData())
GO
USE [services]
GO
CREATE TABLE [dbo].[services]  (ID Int)
CREATE TABLE [dbo].[procedure] (ID Int)
GO
USE [procedure]
GO
CREATE TABLE [dbo].[services]  (ID Int)
CREATE TABLE [dbo].[procedure] (ID Int)
GO
USE master
GO
DROP TRIGGER [DDLTest] ON ALL SERVER
GO
DROP DATABASE [services]
DROP DATABASE [procedure]
GO
<EVENT_INSTANCE>
  <EventType>CREATE_TABLE</EventType>
  <PostTime>2011-12-15T14:34:49.857</PostTime>
  <SPID>63</SPID>
  <UserName>dbo</UserName>
  <DatabaseName>services</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>services</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <TSQLCommand>
    <CommandText>CREATE TABLE [dbo].[services]  (ID Int)
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
<EVENT_INSTANCE>
  <EventType>CREATE_TABLE</EventType>
  <PostTime>2011-12-15T14:34:49.860</PostTime>
  <SPID>63</SPID>
  <UserName>dbo</UserName>
  <DatabaseName>services</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>procedure</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <TSQLCommand>
    <CommandText>CREATE TABLE [dbo].[procedure] (ID Int)
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
<EVENT_INSTANCE>
  <EventType>CREATE_TABLE</EventType>
  <PostTime>2011-12-15T14:35:06.473</PostTime>
  <SPID>63</SPID>
  <UserName>dbo</UserName>
  <DatabaseName>procedure</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>services</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <TSQLCommand>
    <CommandText>CREATE TABLE [dbo].[services]  (ID Int)
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
<EVENT_INSTANCE>
  <EventType>CREATE_TABLE</EventType>
  <PostTime>2011-12-15T14:35:06.477</PostTime>
  <SPID>63</SPID>
  <UserName>dbo</UserName>
  <DatabaseName>procedure</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>procedure</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <TSQLCommand>
    <CommandText>CREATE TABLE [dbo].[procedure] (ID Int)
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
15 дек 11, 17:41    [11773613]     Ответить | Цитировать Сообщить модератору
 Re: DDL_TABLE_VIEW_EVENTS для баз services, procedure  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Mnior , применил предоставленный вами код. Успешно создались базы services, procedure. А так же триггер. Прописал в нем DDL_TABLE_VIEW_EVENTS - изменений все равно нет=(
как будто не к этим табличкам обращается..
16 дек 11, 17:18    [11779451]     Ответить | Цитировать Сообщить модератору
 Re: DDL_TABLE_VIEW_EVENTS для баз services, procedure  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр52
А так же триггер. Прописал в нем DDL_TABLE_VIEW_EVENTS - изменений все равно нет=(
как будто не к этим табличкам обращается..
Моя твоя не понимать.

Ваши скрипты (полностью) и ваши результаты.
16 дек 11, 22:07    [11780693]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить