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

Откуда: Москва
Сообщений: 801
Такая ситуация: есть сервер издатель, он же распространитель SQL SERVER 2008R2. ОС - WIN 2003. на виртуальной машине. Репликация слиянием. Были настроены 2 публикации. Первая на базу данных DB1 с одной подпиской. Подписчик - такой же сервер 2008R2. Вторая публикация - на базе DB2. Три подписки. Одна - с таким же сервером 2008R2, две - с SQL SERVER 2000. Переезжаю на новый сервер. ОС - WIN2008R2, SQL SERVER 2008R2. Сначала потренировался на меньшей. Удалил подписку с подключением к подписчику и удалением данных о подписке на нем, заскриптовал публикацию. Перенес базу данных на новый сервер. Запустил скрипт создания публикации. Создал подписку без инициализации данных. Запустил. Все работает. Окрыленный успехом взялся за другую. Но уперся в то, что никак не хотят удаляться данные на подписчиках (устанавливаю опцию подключиться к подписчику и удалить данные о подписке). Или превышен таймаут или еще какие-то проблемы с сетью судя по всему. Что можно сделать - я правильно понимаю? 1) Удалить подписки на издателе без подключения к подписчикам. 2. На подписчиках (я к ним нормально подключаюсь) с помощью хранимых процедур удалить следы подписок? Все правильно? Какие там процедуры надо запустить и в какой последовательности? Структуры баз DB1 и DB2 одинаковы (ну может где какая мелочь отличается, длина поля или тип данных)
11 апр 15, 12:59    [17502181]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Дело застопорилось совершенно. На старом сервере на издателе удалил все подписки, но их следи остались на подписчиках. Как почистить базу подписчика от следов подписки? Перенес базу на новый сервер, воссоздал публикацию, пытаюсь создать подписку - сообщение об ошибке - Подписка не может быть инициализирована с использованием исходного моментального снимка так как одна или более таблиц в подписке принадлежат другой публикации и поэтому не могут быть удалены. Как удалить эту другую публикацию? Пробовал через SSMS на подписчике - просто зависает все и не удаляется.
12 апр 15, 14:51    [17504967]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Запустил процедуру sp_mergesubscription_cleanup на подписчике - пишет что выполняется запрос. Вот уже более 15 минут. Это нормально? Сколько она может чистить все? База не такая уж и большая. Запусти еще параллельно Профайлер - что то не вижу, чтобы что-то происходило.
12 апр 15, 15:16    [17505023]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
запускаю эту процедуру в режиме отладки - жму шаг с заходом - и тишина - ничего не происходит.
12 апр 15, 15:39    [17505052]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
В итоге сделал все с нуля в новую базу. Но причины почему возникли такие сложности так и не понятны.
12 апр 15, 17:07    [17505238]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1867
garvy,

sp_removedbreplication - удалит в выбранной БД все что связано с репликациями в т.ч. и поля rowguid

Может тут поможет решение...
https://www.sql.ru/forum/999023/replikaciya-sliyaniem-musor-i-fantomnye-publikacii
13 апр 15, 09:46    [17506741]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Проблему восстановления репликации между двумя серверами SQL SERVER 2008 решил . Но остается проблема между издателем - SQL SERVER 2008 и подписчиком - SQL SERVER2000. Но подписчике сейчас в разделе подписки болтается ссылка на уничтоженную подписку. Состояние - running последнее действие - идет синхронизация. На подписчике запустил процедуру sp_removedbreplication. Визуально ничего не изменилось. Что еще можно сделать чтобы убрать следы репликации, но оставить всю информацию? Ввиду медленного канала хочется потом опять сделать подписку уже с новым издателем (уже работает и распространяет подписку на одного подписчика под SQL Server 2008) , без первичной инициализации информации
15 апр 15, 10:17    [17516754]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Попробовал на шару создать подписку на издателе - но халява не проходит конечно же - первое же сообщение при попытке применить снимок на подписчике : Violation of PRIMARY KEY constraint 'PK__MSrepl_identity___044C7D61'. Cannot insert duplicate key in object 'MSrepl_identity_range'.
15 апр 15, 11:13    [17517125]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
В итоге нашел на форуме сценарии по ручному очищению на подписчике. Уже все практически сделал. Очистил таблицы метаданных репликации, удалил триггеры и запросы. Подскажите - а надо ли удалять ограничения на диапазоны первичных ключей на подписчике?
17 апр 15, 11:18    [17528164]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Таблица MSRepl_identity_range на подписчике не очищена. Что с нею надо делать?
17 апр 15, 12:00    [17528415]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Продолжаю борьбу за восстановление репликации с подписчиком под SQL Server 2000.
Дальнейшие мысли вслух.
Издатель
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Подписчик
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
После того, как вручную в базе подписчика очистил таблицы метаданных репликации, удалил триггеры и запросы, ограничения диапазонов создал и запустил принудительную подписку без первичной синхронизации данных - дело пошло. Моментальный снимок применился. Началась репликация. Но по одной из таблиц сбой. Ошибки типа:
1) Обновление строки на "SERVER-MO.VS_ShEn" не удалось распространить на "SERVER1.VS_ELU_EXP". Эта ошибка может быть вызвана нарушением ограничения. Invalid object name 'ctsv_3884DD2C656F47959859F7CBB22613B1'.
2) Обновление строки на "SERVER-MO.VS_ShEn" не удалось распространить на "SERVER1.VS_ELU_EXP". Эта ошибка может быть вызвана нарушением ограничения. Агенту слияния не удалось синхронизировать строку из-за одной или более непредвиденных ошибок в пакете изменений. При устранении неполадок увеличьте значение -OutputVerboseLevel и запустите агент повторно, или проверьте и исправьте другие ошибки ядра СУБД
3) Удаление строки на "SERVER-MO.VS_ShEn" не удалось распространить на "SERVER1.VS_ELU_EXP". Эта ошибка может быть вызвана нарушением ограничения.Агенту слияния не удалось синхронизировать строку из-за одной или более непредвиденных ошибок в пакете изменений. При устранении неполадок увеличьте значение -OutputVerboseLevel и запустите агент повторно, или проверьте и исправьте другие ошибки ядра СУБД
Пытаюсь настроить в профиле агента репликации слиянием вывод информации в файл. Создал пользовательский профиль агента , изменил показатель -outputverboselevel на 2. Но вот засада - по всем справкам надо в агенте -output указать путь к файлу вывода данных. Но при сохранении профиля - ошибка насчет того, что параметр должен быть числовой. Кроме этого в профиле имеется параметр - outputmessagefile, о котором вообще ни слова в справках.
Вопросы: 1) Что за инвалидный объект? Проверил - на подписчике такого действительно нет. Как вывести в файл информацию о ходе репликации - что за параметры - output и -outputmessagefile ?
20 апр 15, 10:50    [17538059]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
указал путь к файлу в параметре -outputmessagefile. прошел сеанс синхронизации - файл пустой.... Значит это не этот параметр для вывода информации в файл.
20 апр 15, 11:17    [17538219]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
garvy
Как вывести в файл информацию о ходе репликации
Найдите джоб мерж-агента и вручную задайте необходимые параметры в строке запуска агента.
garvy
что за параметры - output и -outputmessagefile ?
https://msdn.microsoft.com/en-us/library/ms147839(v=sql.100).aspx
20 апр 15, 11:18    [17538226]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
В журнале джоба агента слияния нашел еще такую ошибку - касается той же таблицы. 2015-04-20 08:56:36.666 [33%] [секунд осталось: 625] Замена строки псевдонимом статьи 28560006 (Заказы Товары в документах), rowguidcol {6D4DC20E-5659-4973-B38B-FE0341B5125C} не может быть применена в месте назначени . См. сведени о причине этой ошибки в таблицах журналов конфликтов. В журнале ошибки которые я привел выше.
20 апр 15, 12:51    [17538863]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
снял трейс и журнал ошибок - может найдется добрый человек, который поймет что происходит. Почему в отдельно взятой таблице не идет обмен информации с издателя на подписчика. Название таблицы - [Заказы Товары в документах] файлы прилагаю. И что делать - убивать подписку и запускать по новой? А даст ли результат? Хоть в какую сторону копать? Как выложить архив? Размер 800Кб
20 апр 15, 14:56    [17540012]     Ответить | Цитировать Сообщить модератору
 Re: удаление подписок репликации слиянием.  [new]
garvy
Member

Откуда: Москва
Сообщений: 801
Нашел. На подписчике в одной из таблиц не удалились триггеры от предыдущей подписки. Они и мешали. Хотя странно - запускал курсор, который перебирал все триггеры репликации и удалял их. Почему он пропустил эти - не понятно. прилагаю сценарий, который родился в ходе моих мучений, на авторство не претендую, куски взяты из имеющихся на форуме обсуждений, по аналогии кое-что сам добавил.Применимо для подписчика SQL SERVER 2000. Может пригодится кому. Выполнял его не пакетом, а пошагово. Спасибо всем за молчаливое присутствие и понуждение к действию. Еще пару таких заходов - и я сам гурой репликации слиянием стану.

К сообщению приложен файл (Сценарий очистки репликации слиянием на подписчике.sql - 5Kb) cкачать
20 апр 15, 22:55    [17541857]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить