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

Откуда:
Сообщений: 19
Насколько хорошей (или плохой) является идея ведения логов изменения таблицы, содержащей в себе достаточно важные данные (финансовые, в частности)? Таблица изменяется только с помощью хранимых процедур, поэтому альтернативой является логирование в процедурах. Вопрос состоит в следующем:
-насколько данные решения будут отличаться в производительности?
-насколько данные решения будут отличаться в надёжности? Насколько MS SQL гарантирует откатываемость транзакций, вызывающих в процессе работы триггеры?
-есть ли другие подводные камни?
18 сен 09, 23:11    [7681886]     Ответить | Цитировать Сообщить модератору
 Re: Использование триггеров в логировании операций с таблицей  [new]
IamZet
Member

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

Во первых, а что вы хотите получить таким логированием? Время изменения, имя пользователя - это можно получить и записать в служебные поля той же таблицы без дополнительных усилий.

Ну а во вторых, это конечно несколько субъективно, но мне триггеры представляются не самым хорошим вариантом. Во первых, они медленнее чем ХП, во вторых, есть ряд ограничений, например, нельзя сделать TRY .. CATCH, и втретьих, делают более сложной для понимания логику работы базы.

Не претендую на единственно правильное мнение.
19 сен 09, 00:34    [7682184]     Ответить | Цитировать Сообщить модератору
 Re: Использование триггеров в логировании операций с таблицей  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
Если у вас SQL Server 2008, можете использовать Change Data Capture, думаю это то что вам нужно. От триггеров это решение отличается удобством настройки и производительностью. Триггер выполняет свой код синхронно с операцией изменения данных, а механизм CDC основан на асинхронном анализе лога транзакций.
19 сен 09, 01:43    [7682298]     Ответить | Цитировать Сообщить модератору
 Re: Использование триггеров в логировании операций с таблицей  [new]
si14
Member

Откуда:
Сообщений: 19
Большое спасибо за ответы.
Основными преимуществами использования триггеров мне видится 2 фактора: красота кода (можно забыть про логирование) и гарантированность создания записи даже при прямом запросе, без вызова процедуры. Под логированием в данном случае подразумевается формирование финансовой отчётности о перемещениях денег между пользователями базы.
Нет, к сожалению, используется SQL Server 2005.
19 сен 09, 10:37    [7682419]     Ответить | Цитировать Сообщить модератору
 Re: Использование триггеров в логировании операций с таблицей  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Журналирование изменений структуры БД и данных
IamZet
мне триггеры представляются не самым хорошим вариантом. Во первых, они медленнее чем ХП
Триггер - это разве не разновидность ХП? С чего бы он был медленнее?
IamZet
нельзя сделать TRY .. CATCH
Ссылку дайте, пожалуйста.
IamZet
делают более сложной для понимания логику работы базы.
Более сложной по сравнению с чем? И в чём заключается сложность?
19 сен 09, 15:50    [7682720]     Ответить | Цитировать Сообщить модератору
 Re: Использование триггеров в логировании операций с таблицей  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
iap
IamZet
делают более сложной для понимания логику работы базы.
Более сложной по сравнению с чем? И в чём заключается сложность?
IamZet, вероятно, имел ввиду случаи, когда разработчик имеет обыкновение забывать о наличии того или иного триггера на таблице.
21 сен 09, 09:50    [7685389]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить