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

Откуда:
Сообщений: 18
К сожалению поиском ничего не нашел, или не так спрашивал. Суть проблемы следующая:
Имеется программный продукт на базе MSSQL 2005 который производит опрос датчиков через свою железную плату, ну и пишет в базу. Иногда датчики отваливаются, о чем появляется соответствующая запись в соответствующей таблице.
Имеется syslog сервер с смс оповещением на который валится еще много чего. Хотелось бы каким-то образом, чтобы запись об отвалившемся датчике появлялась на syslog сервере. Программу написал не я, декомпилировать её, скажем так, невозможно. Разработчики сказали - подумаем. Есть ли какое-то стандартное решение данной ситуации?
На текущий момент я вижу только возможность написать свое приложение, которое будет осуществлять запрос к серверу,и при наличие новой записи в таблице ошибок - отправлять её на syslog сервер. Ну и делать это, скажем, раз в минуту... Про Profiler погуглил - к сожалению свой формат записи лога, на сколько я разобрался. С MSSQL так скажем, работал. но очень давно и не долго. Так что, по-возможности, сделайте скидку :)
23 мар 12, 18:07    [12303976]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
xp_logevent
23 мар 12, 18:49    [12304160]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

Откуда:
Сообщений: 18
ага, спасибо попробую. Как вытаскивать запись из журнала винды - пусть уже сисадмин соображает :)
23 мар 12, 19:08    [12304261]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

Откуда:
Сообщений: 18
так, попробовал.
xp_logevent


добавляет запись, но тогда остался вопрос с отловом момента появления записи с варнингом в таблице приложения. Повторюсь, приложение не мое, внесение изменений невозможно, да и работал я с MSSQL очень давно и очень мало :(
23 мар 12, 21:41    [12304803]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

Откуда:
Сообщений: 18
триггеры заюзать тоже не получилось :( пичалька...
инструкция USE базы данных не разрешено в процедура, функция или триггер.
23 мар 12, 22:52    [12304970]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
Crimean
Member

Откуда:
Сообщений: 13147
user109
триггеры заюзать тоже не получилось :( пичалька...
инструкция USE базы данных не разрешено в процедура, функция или триггер.


а что вы в триггере делать пытались?
23 мар 12, 23:29    [12305084]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
invm
Member

Откуда: Москва
Сообщений: 9889
CREATE EVENT NOTIFICATION (Transact-SQL)
24 мар 12, 00:11    [12305191]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

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

пытался из триггер ана добавление записи в таблицу вызвать xp_logevent - вля внесения записи в журнал Windows. А там USE master....

Такс.. с эвентами придется серьезно курить...

PS что-то мне кажется по простому и нормально не получится... проще похоже написать костыль и опрашивать таблицу раз в минуту по таймеру :)
24 мар 12, 00:36    [12305256]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
Crimean
Member

Откуда:
Сообщений: 13147
не надо юза
exec master..xp_logevent
24 мар 12, 00:44    [12305278]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

Откуда:
Сообщений: 18
Crimean, и всем
Спасибо огромное, получилось. К сожалению, в мире все знать не возможно, и SQL я не знаю, хотя сталкиваться приходится ;) Зато пожалуй как будет время куплю что-нибудь для чайников, чтобы иметь более полное представление, а то про триггеры не сразу вспомнил...
Код, если вдруг планеты выстроятся в ряд и он кому то понадобится:
При добавлении в таблицу dbo.warning строки с ID =100500 - в журнал винды добавляется запись типа:
'The table dbo.warning has alert from the user user1.' с кодом ошибки 60000

CREATE TRIGGER primer5
   ON dbo.warning
   AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;
if (select ID from inserted)='100500'
print'Ошибка датчика'


DECLARE @@TABNAME varchar(30)
DECLARE @@USERNAME varchar(30)
DECLARE @@MESSAGE varchar(255)
SET @@TABNAME = 'dbo.warning'
SET @@USERNAME = USER_NAME()
SELECT @@MESSAGE = 'The table ' + @@TABNAME + ' has alert from the user 
   ' + @@USERNAME + '.'

EXEC master..xp_logevent 60000, @@MESSAGE, informational

END
24 мар 12, 01:06    [12305339]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
user109
При добавлении в таблицу dbo.warning строки с ID =100500 - в журнал винды добавляется запись типа:
'The table dbo.warning has alert from the user user1.' с кодом ошибки 60000


ваш триггер написан не верно, а именно:

if (select ID from inserted)='100500'
print'Ошибка датчика'



давайте представим, что в таблицу добавляем сразу несколько строк...вы получите ошибку:

Subquery returned more than 1 value.
This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
24 мар 12, 10:54    [12305793]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
Crimean
Member

Откуда:
Сообщений: 13147
корректнее будет как-то так

select top 1 .... where
if @@rowcount != 0 begin

exec master..xp_

end

ну или если важно количество - поставить count(*)
24 мар 12, 12:06    [12305965]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL 2005 и syslog  [new]
user109
Member

Откуда:
Сообщений: 18
Ок, спасибо! Поправлю.
24 мар 12, 15:20    [12306588]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить