Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.49 MB
Время: 0.043 c
3-1195472994
ХочуЗнатьВсё
2007-11-19 14:49
2008.04.20
Не понимаю


15-1204284088
Dmitry S
2008-02-29 14:21
2008.04.20
Анонимный доступ к шарам Win2k3


2-1206526598
vetal73
2008-03-26 13:16
2008.04.20
динамический массив


3-1195800195
alexnmsk
2007-11-23 09:43
2008.04.20
Помогите составить запрос


8-1178253224
TIF
2007-05-04 08:33
2008.04.20
3D Max и Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский