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

Откуда: Kiev->Adelaide
Сообщений: 94
Привет всем.
Имеем стабильно повторяющуюся проблему.
Есть 1 публикатор, 1 merge подписка, 1 подписчик.
Настраиваем, все работает. Проходит время, принимается решение переинициализировать подписку по свежему снапшоту.
Как только пользователи на подписчике начинают набирать данные, подписчик входит в ступор на стадии:
Uploading data changes to the Publisher

Включаем расширенное протоколирование replmerg.exe
-Output [C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\repl_Out.txt]
-OutputVerboseLevel [2]

получаем
2007-04-12 08:27:02.895 OLE DB Subscriber 'FILIAL': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2007-04-12 08:27:02.895 Percent Complete: 0
2007-04-12 08:27:02.895 OLE DB Subscriber 'FILIAL': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2007-04-12 08:27:02.895 Retrieving publication information
2007-04-12 08:27:02.895 OLE DB Distributor 'OFFICE\SQL2005': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2007-04-12 08:27:03.067 Percent Complete: 0
2007-04-12 08:27:03.067 Retrieving subscription information.
2007-04-12 08:27:03.067 OLE DB Distributor 'OFFICE\SQL2005': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2007-04-12 08:27:18.520 OLE DB Subscriber 'FILIAL': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2007-04-12 08:27:18.536 Percent Complete: 0
2007-04-12 08:27:18.536 Uploading data changes to the Publisher
2007-04-12 08:27:18.567 OLE DB Distributor 'OFFICE\SQL2005': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}

Виснет на sys.sp_MSadd_merge_history90
в районе вызова sys.sp_MScleanup_subscriber_history
Но почему-то, не могу получить ее тело, то ли она в базе ресурсов то ли компилирована.

Есть мысли?
12 апр 07, 12:55    [4011694]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
В базе ресурсов.

автор
Как только пользователи на подписчике начинают набирать данные, подписчик входит в ступор на стадии:

У вас там слишком длинных блокировок нет, а?
В момент зависания поинтересуйтесь. sp_lock
12 апр 07, 13:10    [4011836]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
В базе ресурсов.

автор
Как только пользователи на подписчике начинают набирать данные, подписчик входит в ступор на стадии:

У вас там слишком длинных блокировок нет, а?
В момент зависания поинтересуйтесь. sp_lock

Пока не идет стадия
Uploading data changes to the Publisher
блокировок нет, естьнесколько S и IS, но это ерунда, сервер в данный момент без нагрузки.
Но как только эта стадия начинается появляется куча блокировок типа KEY в состоянии X.
у процесса Replication Merge Agent. То есть он блокирует эти ресурсы.
51	4	0	0	DB	                                	S	GRANT
52	4	0	0	DB	                                	S	GRANT
55	6	1653580929	2	KEY	(f902b001865e)                  	S	GRANT
55	6	1653580929	2	KEY	(cd024eb17140)                  	S	GRANT
55	6	1653580929	2	KEY	(c70282f85e95)                  	S	GRANT
55	6	1669580986	1	KEY	(e600634bb8d9)                  	X	GRANT
55	6	1669580986	3	KEY	(670077e193c3)                  	X	GRANT
55	6	0	0	DB	                                	S	GRANT
55	6	1653580929	4	KEY	(a303a22359db)                  	X	GRANT
55	6	1653580929	2	KEY	(8903294ec3ba)                  	S	GRANT
55	6	1637580872	2	KEY	(f903b317cdc3)                  	S	GRANT
55	6	1653580929	2	KEY	(7103926ebcc6)                  	S	GRANT
55	6	1669580986	3	KEY	(430106dc487e)                  	X	GRANT
55	6	1637580872	2	KEY	(190374c57b98)                  	S	GRANT
55	6	1669580986	3	KEY	(3201ba9013e7)                  	X	GRANT
55	6	1653580929	2	KEY	(e1020ed8e769)                  	S	GRANT
55	6	1653580929	2	KEY	(b1037c647dd2)                  	S	GRANT
55	6	1653580929	2	KEY	(da03403a6f37)                  	S	GRANT
55	6	1669580986	1	KEY	(ef00bed5ed5b)                  	X	GRANT
55	6	1653580929	2	KEY	(a203de372cbb)                  	S	GRANT
55	6	1669580986	3	KEY	(04014a4253cc)                  	X	GRANT
55	6	1653580929	2	KEY	(ff02abef13c1)                  	S	GRANT
....
56	6	0	0	DB	                                	S	GRANT
57	6	0	0	DB	                                	S	GRANT
60	6	0	0	DB	                                	S	GRANT
60	1	1115151018	0	TAB	                                	IS	GRANT
61	6	0	0	DB	                                	S	GRANT
63	6	0	0	DB	                                	S	GRANT
69	4	0	0	DB	                                	S	GRANT
76	4	0	0	DB	                                	S	GRANT
80	4	0	0	DB	                                	S	GRANT
Но в это время нет блокировок других пользователей я смотрел в sp_who2
12 апр 07, 13:24    [4011952]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Если вы абсолютно уверены, что других блокировок нет, значит, сервер долго энумерит изменения, которые надо отослать-принять. Насколько у вас большой размер метаданных? Может, их чистить пора? Да и переиндексировать не мешает.
12 апр 07, 13:42    [4012091]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
И еще в этот момент зашкаливает процессор 100% нагрузки и не падает
12 апр 07, 13:54    [4012187]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Так что с метаданными?
12 апр 07, 13:56    [4012204]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
Так что с метаданными?

да вроде все в норме. При запуске вручную
exec sp_mergecleanupmetadata 
@publication = 'Prometey7 DICDOC MRG'
,@reinitialize_subscriber = FALSE
Отрабатывает с нулевым результатом и говорит, что
Warning: The procedure sp_mergecleanupmetadata has been deprecated. 
In SQL Server 2000 SP1 and later, the merge agent calls sp_mergemetadataretentioncleanup every time
it runs, so manual cleanup of metadata is not needed. Ignoring passed-in parameters and calling
sp_mergemetadataretentioncleanup.
запускаю
declare @num_genhistory_rows int, @num_contents_rows int, @num_tombstone_rows int, @aggressive_cleanup_only int
exec sp_mergemetadataretentioncleanup @num_genhistory_rows OUTPUT
, @num_contents_rows OUTPUT
, @num_tombstone_rows OUTPUT
, @aggressive_cleanup_only = 0

select @num_genhistory_rows , @num_contents_rows , @num_tombstone_rows , @aggressive_cleanup_only 
----------- ----------- ----------- -----------
0           0           0           NULL
тоже все пусто
12 апр 07, 14:24    [4012388]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Вы где-то устаревшие процедуры совсем раскопали.. Давайте начнем с размера таблиц с метаданными. Сколько записей в каждой?
12 апр 07, 14:26    [4012397]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
Вы где-то устаревшие процедуры совсем раскопали.. Давайте начнем с размера таблиц с метаданными. Сколько записей в каждой?

У нас в публикации 102 статьи/таблицы без фильтрации.
Пользователи у нас шустрые, пока мы ковырялись, они за 2 часа успели вот сколько
select count(*) from dbo.MSmerge_contents 
-----------
158769
select count(*) from dbo.MSmerge_tombstone 
-----------
128
select count(*) from dbo.MSmerge_genhistory where coldate>'2007-04-12'
-----------
299
И теперь если мы инициализируем подписку они нас сожрут :)
12 апр 07, 14:44    [4012531]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
А если третий селект без условия?
12 апр 07, 15:02    [4012686]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

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

А зачем переинициализировать, если у вас все работало нормально?
12 апр 07, 15:04    [4012701]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
А если третий селект без условия?

select count(*) from dbo.MSmerge_genhistory 
---------
13137
Переинициализацию сделали вчера вечером, так как были неразрешимые конфликты (обусловлено архитектурой базы).
Сегодня утром, как только начали ломится пользователи, произошел затык, который нужно срочно разгрести.
12 апр 07, 15:25    [4012861]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
Так что есть идеи? Еще характерный момент, состояние
Uploading data changes to the Publisher
висит порядка 30 минут, потом вылазит ошибка
The merge process was unable to create a new generation at the 'Subscriber'. Troubleshoot by restarting the synchronization with verbose history logging and specify an output file to which to write.
все опять виснет на вызове sys.sp_MSadd_merge_history90
Похоже я не одинок вот еще одна жертва
12 апр 07, 16:52    [4013409]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Если отключить всех пользователей и перезапустить мерж-агента, то синхронизация пройдет?
12 апр 07, 17:01    [4013485]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Хороший ли канал к подписчику?
12 апр 07, 17:03    [4013498]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
Хороший ли канал к подписчику?

Всех пользователей выгнали еще утром, шарашат напрямую данные на публикаторе минуя подписчика.
Я перегрузил подписчика полностью, не помогает, затыкается на sys.sp_MSadd_merge_history90
У нас радио канал. Но он абсолютно не загружен в это время.
Есть подозрения, что пакеты теряются? Да, но я свободно удаленно захожу на подписчика, все службы/программы связываются с публикатором нормально.
12 апр 07, 17:44    [4013847]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Попробуйте профайлером отловить запрос, на котором все затыкается. Если это селект, то просто выполните его в Management Studio, посмотрите, он тоже зависнет или быстро выполнится. Если это запрос insert/update/delete, то тоже выполните его в студии, только оберните в begin tran ... rollback, чтобы не нарушить ничего. И тоже гляньте время выполнения.
12 апр 07, 18:01    [4013990]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Подписка push или pull? Где агент расположен?
12 апр 07, 18:03    [4014006]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
GreenSunrise
Подписка push или pull? Где агент расположен?

Пулл подписка, дистрибьютор на паблишире

Последние запросы, которые удалось проследить
declare @p1 int
set @p1=15550
exec sys.sp_MSadd_merge_history90 @p1 output,31,3,N'Uploading data changes to the Publisher',1,1,0,0,3,N'',0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,'0CEDE423-7C04-43B4-855B-5099BAAAF1C4',0
select @p1
go
declare @p2 int
set @p2=1
exec sp_MSgetmakegenerationapplock_90 0,@p2 output
select @p2
go
go
дальше все умирает, похоже процедура sp_MSgetmakegenerationapplock_90 тупит
12 апр 07, 18:56    [4014308]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
странно, но если выполнить эти скрипты вручную, то они выполняются на раз.
похоже дальше она чего-то ждет. Но чего не известно, профилер молчит как рыба об лед
12 апр 07, 19:07    [4014354]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
А выполнение процедуры завершено? SP:Completed есть? И для какой из двух вами упомянутых процедур?
12 апр 07, 19:29    [4014432]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
Еще кое-что накопал, после этих двух команд есть еще одна
exec sys.sp_MSmakegeneration 0
вот она и виснет, попытался разобраться пошагово и наткнулся на строку в этой процедуре
    exec @retcode= sys.sp_MSgetreplnick @replnick = @replnick out
но как выяснилось, нет этой процедуры. Что интересно, вызов не завернут в какие-то ветки кода с условиями.
Я не смог найти sp_MSgetreplnick для SQL2005, но эта процедура обсуждается активно на разных ворумах в рамках SQL2000.
Чтоже это такое?
12 апр 07, 19:52    [4014503]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Она есть, но она опять-таки в ресурсной базе. Умеете смотреть ее содержимое? Запускаем сервер в single user mode, потом
use mssqlsystemresource
go
exec sp_helptext sp_MSgetreplnick
go
12 апр 07, 20:41    [4014669]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
Бутенко Андрей
Member

Откуда: Kiev->Adelaide
Сообщений: 94
Я как раз этим занимался, только сделал проще, как написано в книжках, сделалал копию этой базы при выключенном сервере и приатачил ее с другим именем. И вот что получается
exec sp_helptext sp_MSgetreplnick
Msg 15197, Level 16, State 1, Procedure sp_helptext, Line 91
There is no text for object 'sp_MSgetreplnick'.
12 апр 07, 20:50    [4014691]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Merge Suscriber не хочет синхронизироваться  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Какие у вас книжки, я не знаю. У меня одна главная ;-) Мой последний пост был сделан в аккурат, как BOL рекомендует. Именно через перезапуск сервера в сингл моде. И текст процы вылазит на ура - читай-не хочу.

Я понимаю, что вытворять такое на боевом сервере не стоит, но ведь есть выход и попроще. Берете тестовую машинку, дохлую, никому не нужную, трудиться ей все равно не придется по-настоящему. Ставите на нее сиквел, только точь-в-точь той же версии, что на боевом сервере, вплоть до сервис-паков и хотфиксов. И дальше курочите ее как угодно - и сингл мод, и все, что хочется.

P.S. Я могу вам выложить текст процы, полученной именно таким способом, но не факт, что у нас версии точно совпадают. А сервис-паки и хотфиксы могли это дело и подправить.
13 апр 07, 11:22    [4016470]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить