Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отслеживание изменений данных для Sql Server 2008  [new]
DesertBrowser
Guest
Добрый день.
Собираюсь писать собственную систему протоколирования изменения данных в таблицах (SQL Server 2008 Express), которая бы позволяла без участия разработчика при создании/изменении таблиц создавать структуры протоколирования (триггеры, таблицы протокола, представления изменённых данных), и конечно при изменении/удалении данных заполняла бы протокольные таблицы с указанием автора изменений, и т.д. и т.п. Цель - знать, кто и когда изменял/удалял данные, не отвлекаясь на создание структур протоколирования.
Но оказалось, что для данной версии сервера есть функционал "Отслеживание изменений". Подскажите пожалуйста, был ли у Вас опыт использования указанного встроенного функционала по отслеживанию изменений, какие недостатки по сравнению с самописной системой, какой подход в итоге предпочли использовать.
21 мар 13, 13:38    [14077087]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
DesertBrowser
какие недостатки по сравнению с самописной системо
Если только вам не хватит функционала. Например (насколько я помню), отслеживание не сохраняет инфу "кто изменил"
21 мар 13, 13:46    [14077126]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
SQL Server 2008 Express
Guest
Change data capture is available only on the Enterprise, Developer, and Evaluation editions of SQL Server
не вижу в списке Express Edition
21 мар 13, 13:47    [14077137]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
alexeyvg
"кто изменил"

таки да такой инфы там нет
21 мар 13, 13:48    [14077145]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
DesertBrowser
Guest
alexeyvg, спасибо за ответ.
отсутсвие информации об авторе изменений - серьёзный недостаток. В интернете мне встретилось, что проблему можно решить добавлением в системную таблицу протокола столбца с указанием значения по умолчанию, равного текущему пользователю. Однако отказоустойчивость такой системы под вопросом.
Ещё интересно, позволяет ли Отслеживание изменений сохранять изменения за неопределённое время (т.е. все).
21 мар 13, 13:51    [14077160]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
dalex1973
Member

Откуда: Польша
Сообщений: 287
SQL Server 2008 Express
Change data capture is available only on the Enterprise, Developer, and Evaluation editions of SQL Server
не вижу в списке Express Edition

ТС очевидно имеет в виду Change Tracking. Но эта фича для других целей делалась.
Имхо "светит" ТС набор триггеров плюс ServiceBroker для асинхронности.
21 мар 13, 18:16    [14078854]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31432
DesertBrowser
Ещё интересно, позволяет ли Отслеживание изменений сохранять изменения за неопределённое время (т.е. все).
Да, в процедуре sys.sp_cdc_add_job параметр @retention
Число минут, в течение которого строки информации об изменениях необходимо хранить в таблицах изменений. Аргумент retention имеет тип bigint со значением по умолчанию 4320 (72 часа). Максимальное значение составляет 52494800 (100 лет). Указываемое значение должно быть положительным целым числом.


dalex1973
ТС очевидно имеет в виду Change Tracking. Но эта фича для других целей делалась.
Имхо "светит" ТС набор триггеров плюс ServiceBroker для асинхронности.
ИМХО имеет в виду именно CDC
Но конечно ему придётся купить Enterprise Edition :-)
21 мар 13, 18:37    [14078931]     Ответить | Цитировать Сообщить модератору
 Re: Отслеживание изменений данных для Sql Server 2008  [new]
DesertBrowser
Guest
alexeyvg,

select @@version

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Express Edition on Windows NT 6.1 <X86> (Build 7600: )

В SQL Server Management Studio в свойствах БД и таблиц есть раздел "Отслеживание изменений". Для БД значение свойства установилось в True.
21 мар 13, 20:54    [14079305]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить