Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Incorrect syntax near '<'. DDL Trigger  [new]
NewBie77
Member

Откуда:
Сообщений: 184
Доброго времени суток форумчане !
SELECT @@VERSION
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Standard Edition (64-bit)


Имеется таблица :
CREATE TABLE [dbo].[msgs_20150528](
	[datetime] [varchar](20) NULL,
	[host] [varchar](32) NULL,
	[program] [varchar](50) NULL,
	[pid] [varchar](8) NULL,
	[message] [varchar](max) NULL
) ON [PRIMARY]


Создал DDL Trigger для аудита:
CREATE TRIGGER [server_ddl]
ON ALL SERVER WITH EXECUTE AS 'sa'
    FOR CREATE_ROLE ,ALTER_ROLE,DROP_ROLE,CREATE_DATABASE,ALTER_DATABASE ,DROP_DATABASE,ADD_SERVER_ROLE_MEMBER,DROP_SERVER_ROLE_MEMBER,ADD_ROLE_MEMBER,DROP_ROLE_MEMBER
 
AS
     DECLARE @event varchar(8000);
     SET @event = CAST(EVENTDATA() as varchar(8000));
     
	 DECLARE @sql varchar(max)
     SET @sql = 'INSERT INTO [syslog].[dbo].[msgs_'+CONVERT(varchar(20),GETDATE(),112)+']([datetime],[host],[program],[pid],[message]) VALUES(+convert(varchar(6),getdate(),107) + '' '' + convert(varchar(20),getdate(),108),''SQL SERVER'',''Database Log'',''success'','+@event+')'
     EXEC(@sql)
GO


При создании новой базы пишет Incorrect syntax near '<'. Думаю проблема в @event т.к там формат XML (
<EVENT_INSTANCE><EventType>CREATE_DATABASE</EventType> .....
).
Поменяв переменную @event на простой текст 'abc' все работает. Помогите пожалуйста как исправить ошибку ?
28 май 15, 15:40    [17702120]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near '<'. DDL Trigger  [new]
NewBie77
Member

Откуда:
Сообщений: 184
NewBie77,

Отпечатка
 SET @sql = 'INSERT INTO [syslog].[dbo].[msgs_'+CONVERT(varchar(20),GETDATE(),112)+']([datetime],[host],[program],[pid],[message]) VALUES(convert(varchar(6),getdate(),107) + '' '' + convert(varchar(20),getdate(),108),''SQL SERVER'',''Database Log'',''success'','+@event+')'
28 май 15, 15:44    [17702159]     Ответить | Цитировать Сообщить модератору
 Re: Incorrect syntax near '<'. DDL Trigger  [new]
NewBie77
Member

Откуда:
Сообщений: 184
NewBie77,

сам нашел ошибку ступил в запросе вместо
 '+@event+' 
нужно было
'''+@event+'''
28 май 15, 15:47    [17702188]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить