Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Не понимаю   Найти похожие ветки 

 
ХочуЗнатьВсё   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
2-1206293531
Face
2008-03-23 20:32
2008.04.20
как сделать событие OnCellClick при нажатии пробела на ячейке


15-1204887995
Igor_
2008-03-07 14:06
2008.04.20
define для определения версии C++ Builder


2-1206397813
hahol_64_rus
2008-03-25 01:30
2008.04.20
массив и индесы


15-1205146184
Raven
2008-03-10 13:49
2008.04.20
Изучение дополнительно еще одного языка


2-1206279898
Stepper
2008-03-23 16:44
2008.04.20
Как прикрутить ProgressBar к IdHTTP?