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

Откуда:
Сообщений: 3
Подскажите где можно узнать как правильно это реализовать? Что почитать для начала по этому вопросу?
28 авг 09, 16:06    [7591748]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 679
Обычно такие вещи делают на триггерах.
Естественно, что мониторят не все таблицы, а только нужные .
выглядит это так
к каждой таблице такой t_Table
создают t_TableChangе
где пишут кто/когда какую колонку изменил ...

В принципе 2 мест где такое работало знаю :-)
28 авг 09, 16:11    [7591783]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
Mr.Bubbles
Member

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

Спасибо, начну гуглить по триггерам.
28 авг 09, 16:13    [7591801]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
MustDie
Member

Откуда: Подмосковье
Сообщений: 229
Можно, если места не жалко, при изменениях предыдущее состояние записи инсертить из DELETED в эту же таблицу с неким признаком "архив" (надо такое поле создать).
Все это также в триггере.
28 авг 09, 17:37    [7592358]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
--------------------
Guest
если в 2008, то почитай про cdc
31 авг 09, 09:42    [7595951]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
Народ, а такой вопрос: имеется несколько серверов с БД MS SQL Server 2005. БД одинаковые, просто стоят в разных филиалах предприятия. Необходимо сделать обновление данных БД таким образом, чтобы, если допустим оператор изменил информацию в одной из БД на одном филиале, это должно сразу отразиться и в других БД.
Читал про репликации, вроде не подходит это для решение моей задачи.
31 авг 09, 09:48    [7595989]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
Ennor Tiegael
Member

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

Подходит репликация или нет, зависит от того, насколько "сразу" должны отображаться изменения на других серверах. Только вот непонятно, как это относится к исходному вопросу "как сохранять все изменения" - все-таки не совсем одно и то же.
31 авг 09, 10:54    [7596422]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
Сразу, это значит сразу, как только подтвердилась транзанкция на изменения, данная информация должна ыбть изменена на других серверах.

Соответственно, чтобы это реализовать, а тоже думал над фиксацией этих изменений в БД. Так, что вопросы схожие.
31 авг 09, 11:07    [7596532]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 679
а почему не подходят репликации?
Альтернатива - писать "свое" логирование...

Просто работю с ними уже более 2 лет, на 2000 и потом 2005.
31 авг 09, 12:59    [7597539]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
LexMinsk
Member

Откуда: Republic of Belarus
Сообщений: 451
dvim
а почему не подходят репликации?
Альтернатива - писать "свое" логирование...

Просто работю с ними уже более 2 лет, на 2000 и потом 2005.

Я как понял, репликация в какой то момент времени делает снимок БД и далее синхронизирует его с другими БД. А мне надо, что если в одной из БД произошли изменения, то эти изменнеия должны отобразиться и в других БД. Или я что то не дочилал?
31 авг 09, 13:46    [7597828]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
LexMinsk
dvim
а почему не подходят репликации?
Альтернатива - писать "свое" логирование...

Просто работю с ними уже более 2 лет, на 2000 и потом 2005.

Я как понял, репликация в какой то момент времени делает снимок БД и далее синхронизирует его с другими БД. А мне надо, что если в одной из БД произошли изменения, то эти изменнеия должны отобразиться и в других БД. Или я что то не дочилал?

Не правильно поняли. Читать бол репликация транзакцией. Кстати еще почитайте про логшипинг. это немного не то, но можно обыграть.
31 авг 09, 13:50    [7597850]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 679
А мне надо, что если в одной из БД произошли изменения, то эти изменнеия должны отобразиться и в других БД


В общем репликация это и делает :)
Так что совет - читать про нее.
Или сделать проще - создать тестовую базу с 2 таблиц зареплицировать ее и посмотреть.
31 авг 09, 16:37    [7599110]     Ответить | Цитировать Сообщить модератору
 Re: Как создать систему хранения истории изменений во всех таблицах БД (MS SQL Server)?  [new]
erererererу1
Guest
LexMinsk,

в сторону сервис брокер смотрите
31 авг 09, 17:11    [7599377]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить