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

Откуда: Воронеж
Сообщений: 28
всем превед.

возникла такая проблема
есть таблица, в которой иногда появляются нежелательные значения.
Поставил логгирование на каждый sql запрос к таблице, вроде все норм, все параметры верные, но все равно, время от времени выскакивает бяка.

возникла задача узнать таки какой код меняет значение на нежелательное

делаю к таблице триггер на апдейт
код примерно такой
если inserted.значение = нежелательное, то
зная номер сессии @@SPID получаю sql_handle
SELECT @Handle = sql_handle
FROM
sys.sysprocesses
WHERE
s.spid = @@SPID

затем
insert куда_надо
select text from sys.dm_exec_sql_text(@Handle)

В итоге получаю текст запроса самого триггера, (что в принципе очевидно), а не вызывающего его кода, т.о задача не решена.

Можно ли какнить сделать то, что я хочу?

всем спасибо
16 янв 12, 15:17    [11911503]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какой код изменяет значение в таблице sql server 2005  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Кривое решение - DBCC INPUTBUFFER
Правильное решение - включить профайлер.
16 янв 12, 15:22    [11911563]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какой код изменяет значение в таблице sql server 2005  [new]
zagrr
Member

Откуда: Воронеж
Сообщений: 28
--__Александр__--
включить профайлер.

Как научить профайер логгировать только то, что меняет определенное значение в определенной таблице?
Если научить нельзя, то смысла в нем не вижу
16 янв 12, 15:31    [11911696]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какой код изменяет значение в таблице sql server 2005  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Column Filter --> Text Data LIKE (%'таблица'%'значение'%)

Но все равно это все танцы с бубном. Что бы не было изврата - надо БД проектировать правильно.
Приминительно к вашему случаю - данные в таблице должны модифицироваться только через ХП. Далее, в самой ХП делаете любое логирование, которое вам нужно.
16 янв 12, 15:40    [11911814]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какой код изменяет значение в таблице sql server 2005  [new]
zagrr
Member

Откуда: Воронеж
Сообщений: 28
--__Александр__--
Column Filter --> Text Data LIKE (%'таблица'%'значение'%)
о, кстати да, попробую
думаю на этом тема исчерпана
спасибо
16 янв 12, 15:49    [11911929]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить