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

Откуда:
Сообщений: 7
Имеется Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86)
На нем поднята база издателя репликации слиянием, настроены push подписки с базами клиентов Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Где-то клиенты 64битные, где-то 32 битные и все работает нормально.

После некоторого времени встала необходимость добавить еще одного подписчика с такой же конфигурацией машины и сервера. Подписчик был создан, запущена инициализация подписки, но возникла ошибка репликации:

Error messages:
Parameter 3 is incorrect for this DBCC statement. (Source: MSSQLServer, Error number: 2560)
Get help: http://help/2560
The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)
Get help: http://help/MSSQL_REPL-2147201001

При этом в базе подписчика были создано половину таблиц, половины нет. Нет также тригеров репликации на изменение, удаление, добавление, нет данных в таблицах. Т.е. очень стойкое ощущение того, что репликация доходит до определенного места в снэпшоте и валится в ошибку.

Пробовал:
1. Создать подписчика на другой машине - не помогло, та же ошибка
2. Создал новый снэпшот - не помогло, та же ошибка
3. Проверил базу репликации и системные базы командой DBCC CHECKDB - ошибок не выявлено.
4. Пытался найти более детальную информацию об ошибке через профайлер - саму ошибку не нашел, нашел только когда она вставляется в таблицу истории репликации.
5. Посмотрел на историю job'а репликации, там написано следующее:

Date 30.05.2012 13:05:01
Log Job History (MAIN\SERV-Publication-subcriber2-265)

Step ID 2
Server MAIN\SERV
Job Name MAIN\SERV-Publication-subcriber2-265
Step Name Run agent.
Duration 00:00:51
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
… Много однотипных сообщений …
2012-05-30 09:05:52.295 [13%] [134 sec remaining] Skipping file 'Groups_109.sch' because it has already been delivered for a previous article or by a previously interrupted snapshot.
2012-05-30 09:05:52.312 [13%] [134 sec remaining] Preparing table 'Groups' for merge replication
2012-05-30 09:05:52.418 [13%] [134 sec remaining] Extracting snapshot file 'Groups_109.cft' from cabinet file
2012-05-30 09:05:52.433 [13%] [134 sec remaining] Extracted file 'Groups_109.cft'
2012-05-30 09:05:52.460 [13%] [134 sec remaining] Applied script 'Groups_109.cft'
2012-05-30 09:05:52.730 [13%] [136 sec remaining] Skipping file 'IdentityPaperFields_110.sch' because it has already been delivered for a previous article or by a previously interrupted snapshot.
2012-05-30 09:05:52.739 [13%] [136 sec remaining] Preparing table 'IdentityPaperFields' for merge replication
2012-05-30 09:05:52.814 Parameter 3 is incorrect for this DBCC statement.
2012-05-30 09:05:52.906 Category:SQLSERVER
Source: subcriber2
Number: 2560
Message: Parameter 3 is incorrect for this DBCC statement.
2012-05-30 09:05:52.915 Category:NULL
Source: Merge Replication Provider
Number: -2147201001
Message: The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.

Пробовал искать в интернете, ничего подобного не нашел.
Сталкивался ли кто-нибудь с такой проблемой? Подскажите, пожалуйста, куда еще можно покопать? Вариант убить репликацию и поднять заново – плохой вариант, т.к. потребует много времени и нервов.
30 май 12, 13:38    [12637092]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
В джобе мерж-агента включите подробное журналирование. Или сделайте профиль агента с подробным журналированием.
В полученном журнале ищите инструкцию, приводящую к ошибке.

Либо включите в трассу профайлера событие Exception из категории "Errors and Warnings" и отлавливайте проблемную инструкцию.
30 май 12, 13:46    [12637181]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
Se3rG
Member

Откуда:
Сообщений: 7
invm,
Благодарю за совет.
Настроил профайл как вы советовали он нашел мне весьма странную ошибку (см аттач), из которой к сожалению также ничего не понятно. Error: 1205, Severity: 13, State: 51. У микрософта прочитал, что это дедлоки транзакций. Не могу понять, как они могут происходить для job'а репликации и почему подобные дедлоки не происходят с другими подписчиками?

К сообщению приложен файл (trace2.trc - 1Kb) cкачать
30 май 12, 14:39    [12637819]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Se3rG,

Вам нужно не трассировать единственное событие Exception, а добавить его к выбранному набору событий. И трассировать нужно не Replication Monitor, а Merge-agent.
30 май 12, 15:00    [12637989]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
Se3rG
Member

Откуда:
Сообщений: 7
invm,
Поставил подробное журналирование job'а получил следующий trace (привожу только строки рядом с ошибкой):

2012-05-30 11:08:18.048 Skipping file 'IdentityPaperFields_110.sch' because it has already been delivered for a previous article or by a previously interrupted snapshot.
2012-05-30 11:08:18.049 OLE DB Distributor 'MAIN\SERV': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2012-05-30 11:08:18.069 The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.[13%] [173 sec remaining]
�ó 馀
�ó黼ó獁鼠óὀ Ἷ 䝼,晄,Percent Complete: 13
2012-05-30 11:08:18.083 OLE DB Subscriber 'subcriber2': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2012-05-30 11:08:18.084 Preparing table 'IdentityPaperFields' for merge replication
2012-05-30 11:08:18.085 OLE DB Distributor 'MAIN\SERV': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2012-05-30 11:08:18.108 Percent Complete: 13
2012-05-30 11:08:18.109 Parameter 3 is incorrect for this DBCC statement.
2012-05-30 11:08:18.110 OLE DB Distributor 'MAIN\SERV': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}

Мне это ничего не говорит :(
30 май 12, 15:36    [12638325]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Приведите результаты select @@version с издателя, дистрибьютора и проблемного подписчика.
30 май 12, 16:30    [12638846]     Ответить | Цитировать Сообщить модератору
 Re: Проблема добавления подписки репликации MSSql2008R2  [new]
Se3rG
Member

Откуда:
Сообщений: 7
invm,
Спасибо огромное за совет.
С 98% вероятностью я нашел ошибку профайлером на подписчике.
Происходит вызов: DBCC CHECKIDENT(@qualified_object_name, RESEED, @range_begin) with no_infomsgs
для таблицы IdentityPaperFields после чего сразу возникает ошибка Parameter 3 is incorrect for this DBCC statement.
Сейчас нужно разобраться, что такое непонятное там происходит, сдается мне, что на издателе каким-то образом повредилась таблица с диапазонами идентификаторов.
30 май 12, 16:46    [12638979]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить