На 2007, ноября 23 числа
Репликация на основе механизма Microsoft заработала в полной мере на базе объектов Docs Vision?.
Однако несмотря на... и вопреки... могу сказать, что механизм репликации Микрософт почти работает, но это не коробочный вариант.
Иными словами, прежде чем реплицировать таблицы с констрэйнтами, надо таблицу сначало раздеть, затем сделать с ней что вы хотите, а затем ее опять одеть. Ничего нового, процесс, который давно известен.
| 1.Репликационная схема Microsoft создает одноименные констрэйнты для переименованных таблиц | Если я использую процедуру переименования таблиц exec [dbo].[sp_rename] @objname = 'dvsys_security', @newname = 'dvsys_security$at1' в одной базе данных и
2007–08–21 09:16:49.35 Retrieving publication and article information from the publisher database 'PANSHINI\S2005.at2'
2007–08–21 09:16:49.38 Exception Message:
2007–08–21 09:16:49.38 Could not create constraint. See previous errors. |
| 2.Грязь в таблице sys.tables | Возможна ситуация, когда Вас убеждают в том, что таблица участвует в репликации, хотя Вы удалили все вплоть до дистрибьютора. Посмотрите тогда в таблицу: select * from sys.tables where is_merge_published=1 order by name. Оператор update sys.tables set is_merge_published=0 на сервере 2005 не пройдет так как adhoc запрещен. |
| 3.Неверный файл данных для BCP | Я, конечно понимаю, что данные в таблице могут быть разные, но факт неверного формирования файла данных (и не только у меня) имеет место быть:
C:\Program Files\Microsoft SQL Server\90\COM>bcp at1"."dbo"."dvsys_security in
Starting copy...
0 rows copied. |
| 3.Незавершение процесса репликации полностью | Ошибка может быть произвольной... 2007–08–22 05:40:53.707
The merge process could not enumerate changes at the 'Publisher'.
2007–08–22 05:40:53.707 Category:NULL
Message: The merge process could not enumerate changes at the 'Publisher'.
2007–08–22 05:40:53.707 Category:SQLSERVER
Number: 0
Message
Message
Кстати, если вы получите success в конце работы merge агента, то это не факт, что все хорошо. При использовании pre and post файлов репликации ошибки зачастую не выдаются. |
| 4.остаются триггера | После того, как удалено все триггера типа SELECT * FROM sysobjects WHERE [name] like 'MSmerge_disabledml_%' and [xtype] = 'TR' остаются висеть и не дают работать другим скриптам пользователя |
| 5.имена таблиц | Сложные имена таблиц типа dvtable_{AE691F32_A} порождают ошибки следующего плана:
C:\Program Files\Microsoft SQL Server\90\COM>bcp at1"."dbo"."dvtable<AE691F32_A Причем, если вы пытаетесь заключить все это в скобки, то натыкаетесь на другие грабли
Msg 14027, Level 11, State 1, Procedure sp_addmergearticle, Line 239 |
| 6.Никогда | Не использовать системные хранимые процедуры, написанные разработчиками Microsoft
в теле курсора. Пользуйтесь перебором while() или еще как нибудь. |
| 7.И надеюсь последнее | Если у вас появились ошибки типа: incorrect syntax near 'and'
Просто удалите содержимое MSmergecontent. |