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

Откуда: Железнодорожный
Сообщений: 1842
Блог
Доброго всем настроения, Уважаемые форумчане.

У меня назрела пара вопросов связанных с репликацией. Итак исходные данные: Публикатор и Дистрибьютор один и тот же сервер

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2789.0 (X64) Sep 28 2011 17:10:21 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

+ Создаю 4-е таблицы
CREATE TABLE [dbo].[t001](
	[id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
	[cnt] [int] NOT NULL,
 CONSTRAINT [PK_dbo_t001] PRIMARY KEY ([id] ASC)
) ON [PRIMARY]

GO
CREATE TABLE [dbo].[t002](
	[id] [uniqueidentifier] ROWGUIDCOL NOT NULL DEFAULT (newsequentialid()),
	[cnt] [int] NOT NULL,
 CONSTRAINT [PK_dbo_t002] PRIMARY KEY ([id] ASC)
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[t003](
	[id] [uniqueidentifier]   NOT NULL DEFAULT (newid()),
	[cnt] [int] NOT NULL,
 CONSTRAINT [PK_dbo_t003] PRIMARY KEY ([id] ASC)
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[t004](
	[id] [uniqueidentifier] ROWGUIDCOL  NOT NULL DEFAULT (newid()),
	[cnt] [int] NOT NULL,
 CONSTRAINT [PK_dbo_t004] PRIMARY KEY ([id] ASC)
) ON [PRIMARY]

GO


Для каждой из таблиц и после для всех сразу, создаю по одной репликации каждого вида.
1. Мерджевая
2. Транзакционная
3. Транзакционная с обновляемым подписчиком

Сразу оговорюсь, что искал в инете и читал клигу "Репликация SQL Server 2005/2008 сборник статей от сообщества SQL.RU", но возможно что то упустил.
Объясните или ткните в ссылку где описано почему репликация №3 (Транзакционная с обновляемым подписчиком) создает дополнительное поле msrepl_tran_version uniqueidentifier NOT NULL DEFAULT (newid()), а другие нет? Как работает репликация я представляю, читал.
Можно конечно предположить, для разрешения конфликтов т.к. данные можно вносить/изменять и на публикаторе и на подписчике. Но когда вносишь/изменяешь данные на подписчике, открывается транзакция с подписчика на публикатор, там меняется и потом реплицируется обратно на подписчик. Т.е. при изменении данных на подписчике данные сперва гонятся на публикатор, а потом реплицируются на подписцик обратно. Если я не прав, то поправьте меня.

И второй вопрос, все таки для чего нужен ROWGUIDCOL? Погуглив, нашел несколько объяснений, самым адекватным было это. В нем, Уважаемый Дмитрий говорит,
DeColo®es
Он указывает серверу, что этот столбец уже является глобально-уникальным идентификатором записи и при соответствующих видах репликации не нужно создавать еще один столбец такого же вида.

ладно спорить не будем, но ведь и без него (ROWGUIDCOL) репликации живут и хорошо себя чувствуют. Что доказывает использование таблиц t001 и t003 в репликации. Повторюсь, что Мерджевая и Транзакционная репликации не создают дополнительного столбца, а используют id. Единственное, что ROWGUIDCOL, это добавляет DEFAULT (newid()) если не указали явно.
13 дек 11, 13:04    [11755732]     Ответить | Цитировать Сообщить модератору
 Re: Пара вопросов связанных с репликацией  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
gds
Доброго всем настроения, Уважаемые форумчане.

Объясните или ткните в ссылку где описано почему репликация №3 (Транзакционная с обновляемым подписчиком) создает дополнительное поле msrepl_tran_version uniqueidentifier NOT NULL DEFAULT (newid()), а другие нет? Как работает репликация я представляю, читал.
Можно конечно предположить, для разрешения конфликтов т.к. данные можно вносить/изменять и на публикаторе и на подписчике. Но когда вносишь/изменяешь данные на подписчике, открывается транзакция с подписчика на публикатор, там меняется и потом реплицируется обратно на подписчик. Т.е. при изменении данных на подписчике данные сперва гонятся на публикатор, а потом реплицируются на подписцик обратно. Если я не прав, то поправьте меня.



Для обнаружения и разрешения конфликтов
http://msdn.microsoft.com/ru-ru/library/ms151177%28v=sql.110%29.aspx
13 дек 11, 17:41    [11758728]     Ответить | Цитировать Сообщить модератору
 Re: Пара вопросов связанных с репликацией  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Andrey Sribnyak
Для обнаружения и разрешения конфликтов
http://msdn.microsoft.com/ru-ru/library/ms151177%28v=sql.110%29.aspx

Спасибо, с этим вопросом понятно.
14 дек 11, 09:18    [11761615]     Ответить | Цитировать Сообщить модератору
 Re: Пара вопросов связанных с репликацией  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Для транзакционной репликации rowguidcol вообще не требуется.
Для мерж репликации столбец rowguidcol в таблице создается снепшот агентом, а не при добавлении статьи.
14 дек 11, 11:31    [11762504]     Ответить | Цитировать Сообщить модератору
 Re: Пара вопросов связанных с репликацией  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
invm
Для транзакционной репликации rowguidcol вообще не требуется.

Про это я в курсе, транзакционная репликация использует первичный ключ.

invm
Для мерж репликации столбец rowguidcol в таблице создается снепшот агентом, а не при добавлении статьи.

проверил действительно создает доп. поля только там где поля (PK) не обозначены как rowguidcol.

Спасибо invm и Andrey Sribnyak, теперь все ясно...
14 дек 11, 12:23    [11762948]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить