powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Merge репликация - динамическая гориз.фильтрация
8 сообщений из 8, страница 1 из 1
Merge репликация - динамическая гориз.фильтрация
    #32021166
Просто так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь создать публикацию из одной статьи, где используется динамическая горизонтальная фильтрация hostname=HOST_NAME(). Делаю все это с помощью хранимых процедур. В процедуре sp_addmergearticle описываю фильтр @subset_filterclause = N'hostname=HOST_NAME()'. Далее, при попытке запустить агент Snapshot, он начинает генерировать момент.снимок и неожиданно вываливается с ошибкой "Line 1: Incorrect syntax near 'where'." Что это за фигня такая? Все перекопал, но тщетно. Причем, стоит зайти в свойства публикации и открыть там фильтр, то после этого snapshot генерируется нормально
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021191
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. У меня репликация настраивается тоже хранимыми процедурами, но такой проблемы не возникает. И ваш тест с фильтром прошел без ошибок, снапшот нормально генерится. В sp_addmergepublication не забыли указать параметр @dynamic_filters = N'true'? Какая версия SQL, все ли сервис-паки стоят?
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021205
Просто так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2000, servicepack2
Значится так: публикацию создаю мастером, динамический характер статьи настраиваю там же. Есть хранимая процедура, где удаляются подписчики на публикацию, из публикации удаляется статья, меняется ее структура, затем статья снова включается в публикацию, обновляется снапшот и создаются подписчики. Ни в этой процедуре, ни в Enterprise Managere агент снапшота до конца не отрабатывает, в Session details дело доходит до "Generating trigger script for article", а дальше эта ошибка "Line 1: Incorrect syntax near 'where'".
Но если в Enterprise Managere просто посмотреть фильтр статьи и запустить агент снова, все идет на ура
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021231
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретно в вашем случае не знаю, почему не работает. У меня комплект тот же
Исходя из описанной ситуации могу предложить следующий workaround: для изменения структуры таблицы, участвующей в репликации, необязательно исключать ее из публикации, менять таблицу, а потом снова все настраивать. Можно менять структуру и на ходу. Посмотрите процедуры sp_repladdcolumn, sp_repldropcolumn.
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021282
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За ночь родилось еще одно предложение
Не связанное с workaround'ом. Попробуйте заскриптовать публикацию сразу после перенастройки ее хранимыми процедурами, т.е. когда есть ошибка создания снапшота. Потом зайдите в настройки фильтра статьи, после чего по вашим словам все начинает работать. И заскриптуйте еще раз. Ну а потом остается только сравнить полученные скрипты и найти 10 отличий
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021380
Просто так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообще-то под изменением структуры я подразумевал изменение типа/размерности колонок статьи
Спасибо за совет "найди десять отличий", попробую, может и получится
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021384
Просто так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таки расщелкал я эту проблемку Оказывается, если в публикации только одна статья и есть динамическая фильтрация, агент не может сгенерить снапшот. Только добавил еще одну статью - вуаля, заработало А вот механизма этой проблемы я так и не понял. Теперь думаю - этот эксперимент с одной статьей воспроизводим на других серверах?

Спасибо за советы и внимание!
...
Рейтинг: 0 / 0
Merge репликация - динамическая гориз.фильтрация
    #32021632
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не думаю, что добавление еще одной статьи - это решение проблемы. У меня прекрасно работает и с одной. Вот пример:

exec sp_addmergepublication @publication = 'Test Replica', @dynamic_filters = N'true'
exec sp_addpublication_snapshot @publication = 'Test Replica'
exec sp_grant_publication_access @publication = 'Test Replica', @login = N'sa'
exec sp_addmergearticle @publication = 'Test Replica', @article = 't1', @source_owner = N'dbo', @source_object = 't1', @type = N'table', @subset_filterclause = 'hostname=HOST_NAME()'
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Merge репликация - динамическая гориз.фильтрация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]