Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Синхронизация баз  [new]
Не важно
Guest
Здравсвуйте.
возникла такая штука - есть база (скул 2000), строки в которой пддерживают версионность с помощью битового поля Deleted=0.
Сейчас захотел перенести старые записи в отдельную базу по типу архива.
Проблема - как синхронизировать таблицы-справочники?

Пример есть таблица "счета" с версионностью. и есть таблица "тип счета" - справочник.
допустим я переношу в архив счета которые старые. а потом беру и меняю что-нибудь в справочнике. таперь счета, которые в архиве могут остаться несогласованными с рабочими данными. как нибудь можно это побороть без необходимости делать в каждом справочнике триггер, который будет при изменениях лезть в архив и там править? может репликация какая нить такое умеет или еще как?
9 ноя 09, 10:16    [7899943]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация баз  [new]
Дмитрий16
Member

Откуда: Новосибирск
Сообщений: 481
Не важно
Здравсвуйте.
возникла такая штука - есть база (скул 2000), строки в которой пддерживают версионность с помощью битового поля Deleted=0.
Сейчас захотел перенести старые записи в отдельную базу по типу архива.
Проблема - как синхронизировать таблицы-справочники?

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


В 2000 никак. Это проблема проблем :-)
В 2008 можно секционировать таблицу и положить старые данные на отдельный винт. Но при этом таблица как была одна большая так и останется.
9 ноя 09, 10:48    [7900170]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация баз  [new]
Не важно
Guest
Дмитрий16

В 2008 можно секционировать таблицу и положить старые данные на отдельный винт. Но при этом таблица как была одна большая так и останется.

А если сделать .ndf файл для отдельной файловой группы, куда положить "архив", то не тоже самое будет? Получится что данные физически лежат отдельно, а логически будут согласованы и проблема синхронизации справочников снимется сама собой посколдьку всё в одной базе?
9 ноя 09, 10:52    [7900197]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация баз  [new]
Mix
Member

Откуда:
Сообщений: 160
Есть способ. Основан на отлове изменившихся данных.

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


-------------------------------------------------
Не корысти ради, а токмо во имя поиска благодати.
9 ноя 09, 17:22    [7903654]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить