Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Ситуация: В одной таблице в базе появляются изменения данных. Происходит это регулярно раз в 24 часа, т.е. отрабатывает какой-то job или внешний сервис. Окружение сложное из нескольких серверов (тестовые, прототипы, и т.п.). Похоже просто где-то неправильно настроили приложение и оно лезет не в ту базу, в которую должно. Нужно отследить какой же процесс/машина вносит эти изменения. И вот тут-то самое интересное - не удаётся отловить это profiler'ом. Вроде вся фильтрация настроена как надо и все SQL:Batchcompleted и RPCCompleted там трейсятся. Если запускать запросы, в том числе процессы, которые в нормальных сценариях работы вносят изменения, то всё отлично отслеживается профайлером, но вот отловить "зловреда" не получается. Запускаем трейсер незадолго до часа X, видим, что данные поменялись, а в трейсе ничего. Какие ещё есть особые пути изменения данных, которые могут не отслеживаться? Репликация на этом сервере не используется. На откат к предыдущему состоянию таблицы не похоже, потому что в ней есть timestamp поля и они успешно прирастают. Что ещё можно попробовать проверить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:11 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
написать триггер религия не позволяет? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:15 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Навесьте на таблицу триггер ON UPDATE, и пусть фиксирует все поползновения поменять данные в какой-нить временной таблице - кто, что, куда и зачем... как я понимаю, временнОй период изменений достаточно узок, за 5 минут сервер от лишнего триггера не загнётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:17 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Denis B., вклчить change tracking или cdc, но точно не помню есть ли там хост ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:21 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Про триггер Написать-то не проблема, но там что как-то можно узнать какой процесс меняет данные? Или может хотя бы как выглядит запрос который меняет данные? Мне не важно, что на что изменилось, мне нужно выяснить кто это делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:32 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Denis B., SELECT * FROM sysprocesses WHERE spid = @@SPID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:34 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
так, отвечу сам себе, конечно HOST_NAME() никто не отменял. Что-ж попробуем навесить триггер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:36 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Denis B.так, отвечу сам себе, конечно HOST_NAME() никто не отменял. Что-ж попробуем навесить триггер. user_name() и еже с ним. и точно не помню - но функция возвращающая верхний батч ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:38 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Гигабайт Мегабайтович Килобайтов, dbcc inputbuffer(@@spid) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:40 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Denis B., в качестве гипотезы - если в трассе ничего нет, это может быть изменение в другом месте и восстановление в эту базу. Особенно учитывая периодичность - это может быть джоб, который держит тестовую базу в актуальном состоянии - регулярно ресторит ее из свежих бэкапов. Вот скрипт, которым это можно проверить: https://www.mssqltips.com/sqlservertip/1724/when-was-the-last-time-your-sql-server-database-was-restored/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:15 |
|
||
|
Неконтролируемые изменения данных в таблице
|
|||
|---|---|---|---|
|
#18+
Что-ж, триггер помог. Нашелся на одной машине запускаемый через scheduler скрипт sqlcmd. Непонятно только почему же его профайлер не отлавливал, сейчас специально посмотрел на настройки отлавливаемых событий - ничего особо подходящего, не нашёл, что можно было бы добавить специально для slcmd. Всем спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2018, 08:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39623061&tid=1690004]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 316ms |

| 0 / 0 |
