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

Откуда: Санкт-Петербург
Сообщений: 131
Утра доброго всем.

Настроена репликация слиянием. Для таблицы стоит фильтр:
where ClientID = 1
И все работает тихо да гладко - новые записи добавляются/изменяются/удаляются и все это синхронизируется, но!.. в таблице подписчике записей с ClientID = 1 меньше чем в таблице издателе. При этом ВСЕ строки подписчика существуют в издателе.
То есть по каким то причинам часть строк на издателе не переносится к подписчику..
rowguid у всех строк заполнен. Под фильтр попадают все. Конфликтов нет. Тригеров, кроме созданных репликацией, нет.
Как я могу заставить репликацию пересмотреть все данные и синхронизовать все строки? Если это можно сделать без пересоздания репликации.. будет чудно!

Microsoft SQL Server 2005 - 9.00.4053.00 (X64)
20 ноя 09, 10:56    [7955057]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
просто запустите на издателе
update mytable set anyfield=anyfield
20 ноя 09, 11:34    [7955320]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
ura,

запускал. Это была моя первая идея.

Синхронизировалась куча апдейтов. Но новые записи не появились.

Сейчас проапдейчу конкретные строки, которых нет на подписчике и попробую синхронизировать...
20 ноя 09, 12:02    [7955581]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Сделал.

Никаких изменений синхронизированно не было..
Репликация просто не видит этих строк.

Есть мысли как это исправить не пересоздавать репликацию ?
20 ноя 09, 12:07    [7955622]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
да... в 2000-м, помнится, прокатывало...
пересоздавать репликацию не обязательно, можно snapshot перегенерить
20 ноя 09, 12:12    [7955678]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Есть подозрение, что это строки, имевшиеся в таблице до установки репликации.. Всё то что менялось после этого момента - отлично синхронизируется.

Сейчас думаю только о том, чтобы удалить статью репликации и добавить ее заново, при этом удалив таблицу с подписчика. Но ОЧЕНЬ не хочу этого делать - муторное это дело..
20 ноя 09, 12:12    [7955679]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Снапшот всегда делается новый перед синхронизацией. Это 100%.
20 ноя 09, 12:13    [7955686]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Папуша Дмитрий
Снапшот всегда делается новый перед синхронизацией. Это 100%.

Это как ? Перед каждой синхронизацией ???
Если сделать новый снэпшот, в него должны попасть все записи, и этот новый снапшот должен закачаться на подписчика.
20 ноя 09, 12:48    [7956004]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Бинго!
Именно этого не происходит.
У меня merge репликация, не путать со snapshot. Здесь не так просто записи синхронизируются.
20 ноя 09, 12:55    [7956042]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Что-то мне кажется, вы не совсем представляете роль snapshot-агента в merge-репликации. Снэпшот генерируется при создании публикации и применяется на подписчике один раз для начальной синхронизации данных и объектов репликации.
Если snapshot-агент запустить еще раз и реинициализировать подписку, все данные на подписчике будут удалены и загружены заново из снэпшота.
20 ноя 09, 13:21    [7956222]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ABV
Member

Откуда: Minsk
Сообщений: 88
Папуша Дмитрий,

действительно, перегенерите снапшот, должно помочь:
-выбираете публикацию в management studio;
- view snapshot agent status в контекстном меню;
- press Start.
20 ноя 09, 13:26    [7956267]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Поправьте меня, если я не прав,
но ключевое слово здесь не "перегенерить снапшот", а "реинициализировать подписку".
Снапшот генерируется каждый раз перед синхронизацией ( для него настраивается расписание, и оно у меня такое ). Этот агент не определяет поведение подписчика, он лишь предоставляет данные.
А вот пометить подписки к реинициализации - как раз означает, что таблица будет очищена и будут слиты Все данные, а не только изменения.
Это мое представление процесса.. грубое, но разница вроде бы понятна.

Однако, сейчас попробую реинициализировать.. чем черт не шутит.
20 ноя 09, 14:09    [7956642]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
да, я забыл сначала написать про реинициализацию
Папуша Дмитрий

Снапшот генерируется каждый раз перед синхронизацией ( для него настраивается расписание, и оно у меня такое ).

А вот это зачем ???
20 ноя 09, 14:12    [7956658]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
ura,
чувствую какой то подвох здесь.
Я полагал, что этот снапшот содержит информацию об изменениях на издателе. С ним синхронизируется подписчик, в результате чего решается какие изменения применять и где.
20 ноя 09, 14:50    [7956969]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Я вижу, что вы плаваете либо в терминах, либо в механизмах merge-репликации.
Как я уже говорил, снэпшот генерируется при создании публикации и применяется на подписчике один раз для начальной синхронизации данных и объектов репликации.
Затем, при изменении данных для каждой таблицы срабатывает триггер (MSmerge_.....), который скидывает guid-ы измененных записей в специальные таблицы.
Затем, при синхронизации, уже merge-агент (а не snapshot-агент!) синхронизирует только эти измененные записи.
20 ноя 09, 14:55    [7957014]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Вы правы, с пониманием механизмов не все прекрасно..
А конкретно, я считал, что merge агент, ответственный за синхронизацию, берет информацию из снэпшота, который в свою очередь содержит и снимки таблиц, в которые заносятся изменения тригерами репликации. И поэтому делать его нужно как раз перед синхронизацией.
Все немного проще оказывается.
За это спасибо!
А вот реинициализация мне сломала напрочь репликацию. Сонхронизация стала отваливаться с ошибкой о невозможности вставить дубликаты в поле примари кея.
Исправил исключением/добавлением статей из этой репликации и полной синхронизацией.
Сейчас проверяю, все ли ладно с результатами...
20 ноя 09, 15:15    [7957147]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Папуша Дмитрий
. Сонхронизация стала отваливаться с ошибкой о невозможности вставить дубликаты в поле примари кея.

На публикации - Properties - Articles - Article Properties - Action if name is in use - Drop existing object and create a new one
20 ноя 09, 15:48    [7957400]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Немного почерпнул для себя полезного.

возник вопрос .

а вот это работает в репликации слиянием

[url=]http://msdn.microsoft.com/ru-ru/library/ms152469%28SQL.90%29.aspx[/url]

Репликация слиянием не завершится неудачей, если статьи не упорядочены, потому что, если происходит нарушение ограничения, агент слияния продолжает обрабатывать статьи. Затем, после обработки остальных статей, он пытается выполнить сбойные операции. При указании порядка статей просто исключаются повторные попытки и связанная с ними дополнительная обработка. Если указать неправильный порядок (например, если он задает обработку записей с подробными данными до обработки записей заголовков), репликация слиянием будет продолжать обработку до ее успешного завершения.

А то у меня по поводу зависимостей траблы какие то
20 ноя 09, 16:06    [7957551]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Andrey1306
Немного почерпнул для себя полезного.

возник вопрос .

а вот это работает в репликации слиянием

[url=]http://msdn.microsoft.com/ru-ru/library/ms152469%28SQL.90%29.aspx[/url]

Репликация слиянием не завершится неудачей, если статьи не упорядочены, потому что, если происходит нарушение ограничения, агент слияния продолжает обрабатывать статьи. Затем, после обработки остальных статей, он пытается выполнить сбойные операции. При указании порядка статей просто исключаются повторные попытки и связанная с ними дополнительная обработка. Если указать неправильный порядок (например, если он задает обработку записей с подробными данными до обработки записей заголовков), репликация слиянием будет продолжать обработку до ее успешного завершения.

А то у меня по поводу зависимостей траблы какие то

насчет этого - не сталкивался, всегда использовал FOREIGN KEY NOT FOR REPLICATION
при этом таких проблем нет
20 ноя 09, 16:22    [7957669]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
FOREIGN KEY NOT FOR REPLICATION

Прошу прощения а что это ?
20 ноя 09, 16:24    [7957687]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
ura
Andrey1306
Немного почерпнул для себя полезного.

возник вопрос .

а вот это работает в репликации слиянием

[url=]http://msdn.microsoft.com/ru-ru/library/ms152469%28SQL.90%29.aspx[/url]

Репликация слиянием не завершится неудачей, если статьи не упорядочены, потому что, если происходит нарушение ограничения, агент слияния продолжает обрабатывать статьи. Затем, после обработки остальных статей, он пытается выполнить сбойные операции. При указании порядка статей просто исключаются повторные попытки и связанная с ними дополнительная обработка. Если указать неправильный порядок (например, если он задает обработку записей с подробными данными до обработки записей заголовков), репликация слиянием будет продолжать обработку до ее успешного завершения.

А то у меня по поводу зависимостей траблы какие то

насчет этого - не сталкивался, всегда использовал FOREIGN KEY NOT FOR REPLICATION
при этом таких проблем нет


Добавлю что такая ситуация у меня при развертывании снимка , то есть например не все представления создаются потому что пытается создать представления которые ссылаються на другие еще не созданные, хотя судя по мсдн такого быть не должно
20 ноя 09, 16:31    [7957735]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
ura
Member [заблокирован]

Откуда: Киев
Сообщений: 932
Andrey1306,

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/rpldata9/html/9e230b92-162f-429b-afbb-6f32a2111c73.htm

Andrey1306
Добавлю что такая ситуация у меня при развертывании снимка , то есть например не все представления создаются потому что пытается создать представления которые ссылаються на другие еще не созданные, хотя судя по мсдн такого быть не должно

Ну это ж совсем не то, про что в статье написано.
Насчет представлений я не могу ничего сказать, представления не доводилось реплицировать, только таблицы
20 ноя 09, 16:34    [7957754]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Папуша Дмитрий
Member

Откуда: Санкт-Петербург
Сообщений: 131
Andrey1306,

насколько я помню, где то четко сказано, что при репликаци вьюх должны так же реплицироваться объекты, на которых эти вьюхи основаны.
NOT FOR REPLICATION может использоваться для нескольих типов объектов базы.. в вашем случае это не подойдет, насколько я понял. Но все равно полезная информация.

ura,
Drop existing object and create a new one - может быть и спасло бы конкретно сейчас. Но подразумевается что в эту таблицу будут сливаться данные из разных издателей - по фильтрам. Поэтому дропать объект крайней не желательно.
20 ноя 09, 17:21    [7958099]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
Я реплицирую полностью всю базу, и вот такие ошибки

The schema script 'AllowedRelease9a546941_133.sch' could not be propagated to the subscriber. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)

AllowedRelease9a546941_133.sch в себе содержит


drop View [dbo].[AllowedReleasesForNotices]
go

SET QUOTED_IDENTIFIER ON
go
SET ANSI_NULLS ON
go
CREATE VIEW [dbo].[AllowedReleasesForNotices]
AS
SELECT     rbr.ReleaseTimeID, n.NoticeID, rbr.ReleaseTimeDate
FROM         dbo.Notice AS n INNER JOIN
                      dbo.ReleasesByRubricsView AS rbr ON rbr.RubricID = n.RubricID AND n.NoticeTypeID = rbr.NoticeTypeID
WHERE     (n.DeletedFlag = 0) AND (rbr.BlockTime IS NULL)

go

Этого представления нету еще поэтому и ошибка, мсдн пишет все норм эта статья будеть на время отложена и создадут то что возможно и начнется создание заново.

У меня так не получается ))
20 ноя 09, 17:42    [7958271]     Ответить | Цитировать Сообщить модератору
 Re: Merge replication problem.  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
ReleasesByRubricsView это я имел ввиду под словосочитанием этого
20 ноя 09, 17:44    [7958286]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить