Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 репликация  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Добрый день. Пытаюсь разобраться в репликации.

Для успешной репликации как я понял нужно вводить ключевое поля GUID, чтобы обеспечить уникальность записи и избежать проблем с рассинхронизаций. Т.е. простой ключь с счетчиком уже не прокатит. Но в мсдн я прочел что использование GUID может снизить производительность запросов. Что очень критично. Так ли это? и как обычно делают в подобных случаях?
24 ноя 11, 14:57    [11651994]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
maximIZ,

Если нет поля uniqueidentifier (GUID), то репликация сама создаст его в таблице и будет отталкиваться от него. Если оно есть, то репликация будет использовать его.
24 ноя 11, 15:44    [11652506]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
maximIZ, какого типа репликация?
24 ноя 11, 15:47    [11652542]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
invm
maximIZ, какого типа репликация?

Видимо ТС имеет ввиду мерджевую.
24 ноя 11, 15:55    [11652646]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
я пока тренируюсь на "Публикация транзакций с обновляемыми подписками". После первых тестов действительно guid сам создается. Но мне не понятен механизм репликации. Допусти есть табличка справочник tblTemp с двумя полями ID - счетчик и Name (varchar(250)) и создается еще одно поле с guid. предположим что записи синхронизированы и у нас 100 записей с id от 1 до 100. Берем и удаляем на подписчике 50-ую запись. Тогда при последующей репликации у нас создастся недостающая запись с тем же guid но другим ID. он станет 101. И если у нас с этой справочной таблицей были связи у другой таблички по полю ID, получается ошибка. связь то была с 50-тым ID а он теперь 101. Тогда получается что счетчики ни как не должны использоваться. Потому что запись во второй табличке не сможет прореплицироваться из за того что нет уже 50-ой записи
24 ноя 11, 16:10    [11652825]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
maximIZ
я пока тренируюсь на "Публикация транзакций с обновляемыми подписками".

maximIZ
ключевое поля GUID,

Не надо. Для транзакционной репликации надо первичный ключ на реплицируемой таблице.

А вообще сходите сюда и сюда.
24 ноя 11, 16:17    [11652906]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Принципы работы обновляемых подписок
24 ноя 11, 16:24    [11652974]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
gds
А вообще сходите сюда и сюда.

Со сторой ссылкой промахнулся, вот нужная.
24 ноя 11, 16:42    [11653173]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
все же не понял немного. тут написано:
Агент слияния сравнивает содержимое таблиц MSmerge_contents подписчика и издателя. Ориентируясь по значениям столбца rowguid и по номеру поколения каждой из представленных там строк, он копирует новые строки и изменяет уже имеющиеся. 

Так чтоже произойдет если на подписчике я удалил строку а она приходит снова от издателя? ей присвоится новый ID или каким то магическим образом появится удаленная строка с тем же ID
24 ноя 11, 17:16    [11653444]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
maximIZ, во-первых, вы смешиваете в кучу "транзакционную с обновляемой подпиской" и "слиянием". Во-вторых, во время сингхронизации строка будет удалена так же и на издателе.
24 ноя 11, 17:32    [11653630]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
а что если в некоторых таблицах должна быть односторонняя репликация. например в спарвочниках, тогда нужен другой вид релпикации. а обычно в таких случаях настраивают несколько видов репликации?
24 ноя 11, 17:38    [11653708]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Можно настроить несколько типов репликации, а можно на подписчиках запретить локальные изменения.
24 ноя 11, 18:21    [11654147]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Ни когда не делал доступ на уровне таблиц. ни как не могу понять как убрать права на Delete Insert Update у таблички
24 ноя 11, 23:05    [11655355]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
А не надо тут доступом рулить. Надо повесить соответствующие instead of триггера, которые через sessionproperty('replication_agent') проверяют в репликационной сессии они сработали или нет.
25 ноя 11, 00:24    [11655594]     Ответить | Цитировать Сообщить модератору
 Re: репликация  [new]
лолл
Member

Откуда:
Сообщений: 450
maximIZ
Ни когда не делал доступ на уровне таблиц. ни как не могу понять как убрать права на Delete Insert Update у таблички


не забегайте так далеко. начните с изучения разных видов репликации, определите, какой из них подходит именно вам, необходимо ли сочетать сразу несколько видов репликации и т.п.
25 ноя 11, 00:49    [11655647]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить