Форум: "Базы";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];
ВнизНе понимаю Найти похожие ветки
← →
ХочуЗнатьВсё (2007-11-19 14:49) [0]Добрый вечер всем!
Собственно, вопрос в следующем: меня попросили синхронизировать две таблицы из разных баз, а я не понимаю, как это сделать(.
Надо в таблицу второй базы заносить изменения из первой(обратно не надо).
Я даже не понимаю, откуда браться(
Заранее благодарен за любой совет)
← →
Anatoly Podgoretsky © (2007-11-19 14:56) [1]> ХочуЗнатьВсё (19.11.2007 14:49:00) [0]
Репликация в любом виде, поскольку в одном направление, то очень стабильно.
Информация в BOL
← →
ХочуЗнатьВсё (2007-11-19 15:00) [2]Спасибо.
← →
ХочуЗнатьВсё (2007-11-19 15:29) [3]Блин, это репликация мне нужна(.
Ситуация вот в чём: раз в полгода неоходимо обновить данные в таблице 2, если в таблице 1 есть какие-либо изменения или добавления, а репликация, как я понял, будет это делать постоянно.
Есть ли другой способ?
← →
clickmaker © (2007-11-19 15:31) [4]
> а репликация, как я понял, будет это делать постоянно
как скажешь, так и будет
Репликацию типа snapshot можно настроить на любую периодичность
← →
ХочуЗнатьВсё (2007-11-19 15:32) [5]Забыл еще сказать, на базе один я не могу делать никаких изменений, доступ только на чтение.
← →
ХочуЗнатьВсё (2007-11-19 15:35) [6]
> доступ только на чтение.
могу ли я в таком случае использовать репликацию?
← →
Anatoly Podgoretsky © (2007-11-19 15:38) [7]Можешь, особенно в этих условиях.
Но при такой периодичности, может проще backup/Restore
← →
ХочуЗнатьВсё (2007-11-19 15:48) [8]Сорри, что не сказал сразу.
Таблицы не одинаковые по структуре(это вообще разные базы, просто во второй есть некотороые сведения из первой), поэтому из первой таблицы берем 4 поля(всего полей 22), и обновляем их значения во второй(а во второй 9 полей), либо удаляем, если в первой их уже нету.
Вот, вроде вся суть изложена).
Все равно спасибо за внимание к вопросу))).
← →
Anatoly Podgoretsky © (2007-11-19 15:57) [9]> ХочуЗнатьВсё (19.11.2007 15:48:08) [8]
Тогда тебя устроит обычный DTS - пишем в любой формат, потом гоним в Т2, можно например гнать в любой формат, а потом своей программой синхронизировать вторую таблицу. Жалко что в первую не можешь залезть, тогда можно было бы с помощью триггеров отловить удаления, а изменения с помощью дополнительного поля TimeStamp или те же триггеры. А может у тебя есть возможность поставить триггера на таблицу, тогда это простой путь.
← →
ХочуЗнатьВсё (2007-11-19 16:04) [10]Ок, теперь вроде понял, попробую щас это реализовать.
Благодарю за помощь)
← →
Anatoly Podgoretsky © (2007-11-19 16:05) [11]> ХочуЗнатьВсё (19.11.2007 16:04:10) [10]
Какой вариант?, триггеры здесь лучший.
← →
ХочуЗнатьВсё (2007-11-19 16:27) [12]Завтра пойду узнавать насчёт доступа, если разрешат, то буду триггеры делать, а сейчас пытаюсь понять, что такое DTS и Т2 :)
← →
Anatoly Podgoretsky © (2007-11-19 16:32) [13]> ХочуЗнатьВсё (19.11.2007 16:27:12) [12]
DTS это Data Transformation Service - c его помощью будешь перегонять промежуточную таблицу раз в полгода в подходящий формат, в один из возможных, а Т2 это по твоей терминологии - таблица 2 в базе 2
С помощью триггеров накапливаешь изменение, вставки и удаление, потом гонишь ее в траспортабельный вид и очищаешь промежуточную таблицу, на второй базе проигрываешь данный файл и так с нужным интервалом. В промежуточной таблице сделай два поля TimeStamp и вид операции, остальные поля один в один.
← →
Gadenysh (2007-11-19 19:14) [14]если есть коннект к удаленному серверу, можно сделать гетерогенными запросами
что-то типа:
exec sp_addlinkedserver "remoteserver"
insert into remoteserver.remotedb.dbo.remotetable(.нужные поля..)
select .... from localserver.localdb.dbo.localtable
where not exists(select null from remoteserver.remotedb.dbo.remotetable.PKField = localserver.localdb.dbo.localtable.PKField)
ну и так далее
update....
delete...
вобщем все достаточно просто, но BOL почитать придется
← →
megabyte © (2007-11-20 10:40) [15]Одностороннюю репликацию можно даже самому сделать(делал между FB и MySQL). Но, конечно, лучше использовать встроенные средства менеджера СУБД %)
← →
Anatoly Podgoretsky © (2007-11-20 10:51) [16]
> Но, конечно, лучше использовать встроенные средства менеджера
> СУБД %)
Сомневаюсь, что штатная сможет работать с одной таблицей и плюя на остальные. Штатная все таки на базу.
← →
megabyte © (2007-11-22 10:20) [17]Хм, не знал, т.к. не применял пока ни разу :)
← →
ХочуЗнатьВсё (2007-11-22 16:49) [18]делаю триггеры, спс за помощь, но сейчас опять застопорился.
В своей таблице добавил поле для идентификатора из первой таблицы, и при выполнить следующий код вылезает ошибка "Invalid column name "Server-SQL"."
update groups
set RemoteID=[Server-SQL].DB.dbo.Groups.ID
from [Server-SQL].DB.dbo.Groups
where
[name]=[Server-SQL].DB.dbo.Groups(Grup_name)
Удаленный сервер называется Server-Sql, каких-то правил по обозначению не нашёл.
P.S. надеюсь, кто-то еще читает)))
← →
ХочуЗнатьВсё (2007-11-23 16:19) [19]всё, разобрался, приношу извинения за последний вопрос(точнее, за его глупость)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c