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

Откуда:
Сообщений: 11
Ситуация:
В одной таблице в базе появляются изменения данных. Происходит это регулярно раз в 24 часа, т.е. отрабатывает какой-то job или внешний сервис. Окружение сложное из нескольких серверов (тестовые, прототипы, и т.п.). Похоже просто где-то неправильно настроили приложение и оно лезет не в ту базу, в которую должно. Нужно отследить какой же процесс/машина вносит эти изменения. И вот тут-то самое интересное - не удаётся отловить это profiler'ом.
Вроде вся фильтрация настроена как надо и все SQL:Batchcompleted и RPCCompleted там трейсятся. Если запускать запросы, в том числе процессы, которые в нормальных сценариях работы вносят изменения, то всё отлично отслеживается профайлером, но вот отловить "зловреда" не получается. Запускаем трейсер незадолго до часа X, видим, что данные поменялись, а в трейсе ничего.

Какие ещё есть особые пути изменения данных, которые могут не отслеживаться?
Репликация на этом сервере не используется.
На откат к предыдущему состоянию таблицы не похоже, потому что в ней есть timestamp поля и они успешно прирастают.

Что ещё можно попробовать проверить?
30 мар 18, 10:11    [21298326]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
написать триггер религия не позволяет? ))
30 мар 18, 10:15    [21298343]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20198
Навесьте на таблицу триггер ON UPDATE, и пусть фиксирует все поползновения поменять данные в какой-нить временной таблице - кто, что, куда и зачем... как я понимаю, временнОй период изменений достаточно узок, за 5 минут сервер от лишнего триггера не загнётся.
30 мар 18, 10:17    [21298351]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Denis B.,

вклчить change tracking или cdc, но точно не помню есть ли там хост
30 мар 18, 10:21    [21298362]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Denis B.
Member

Откуда:
Сообщений: 11
Про триггер
Написать-то не проблема, но там что как-то можно узнать какой процесс меняет данные? Или может хотя бы как выглядит запрос который меняет данные?

Мне не важно, что на что изменилось, мне нужно выяснить кто это делает.
30 мар 18, 10:32    [21298403]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Denis B.,

SELECT * FROM sysprocesses WHERE spid = @@SPID
30 мар 18, 10:34    [21298405]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Denis B.
Member

Откуда:
Сообщений: 11
так, отвечу сам себе, конечно HOST_NAME() никто не отменял.
Что-ж попробуем навесить триггер.
30 мар 18, 10:36    [21298412]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
Denis B.
так, отвечу сам себе, конечно HOST_NAME() никто не отменял.
Что-ж попробуем навесить триггер.

user_name() и еже с ним.

и точно не помню - но функция возвращающая верхний батч
30 мар 18, 10:38    [21298421]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Гигабайт Мегабайтович Килобайтов,

dbcc inputbuffer(@@spid)
30 мар 18, 10:40    [21298430]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Denis B., в качестве гипотезы - если в трассе ничего нет, это может быть изменение в другом месте и восстановление в эту базу.
Особенно учитывая периодичность - это может быть джоб, который держит тестовую базу в актуальном состоянии - регулярно ресторит ее из свежих бэкапов.

Вот скрипт, которым это можно проверить:
https://www.mssqltips.com/sqlservertip/1724/when-was-the-last-time-your-sql-server-database-was-restored/
30 мар 18, 11:15    [21298575]     Ответить | Цитировать Сообщить модератору
 Re: Неконтролируемые изменения данных в таблице  [new]
Denis B.
Member

Откуда:
Сообщений: 11
Что-ж, триггер помог.
Нашелся на одной машине запускаемый через scheduler скрипт sqlcmd.

Непонятно только почему же его профайлер не отлавливал, сейчас специально посмотрел на настройки отлавливаемых событий - ничего особо подходящего, не нашёл, что можно было бы добавить специально для slcmd.

Всем спасибо за советы.
2 апр 18, 08:20    [21303753]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить