NexusSmallErp: РепликацияMSSQL ...

Glavnaja Stranica | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

На 2007, ноября 23 числа
Репликация на основе механизма Microsoft заработала в полной мере на базе объектов Docs Vision?.


Однако несмотря на... и вопреки... могу сказать, что механизм репликации Микрософт почти работает, но это не коробочный вариант.
Иными словами, прежде чем реплицировать таблицы с констрэйнтами, надо таблицу сначало раздеть, затем сделать с ней что вы хотите, а затем ее опять одеть. Ничего нового, процесс, который давно известен.


1.Репликационная схема Microsoft создает одноименные констрэйнты для переименованных таблиц

Если я использую процедуру переименования таблиц exec [dbo].[sp_rename] @objname = 'dvsys_security', @newname = 'dvsys_security$at1' в одной базе данных и 
exec [dbo].[sp_rename] @objname = 'dvsys_security', @newname = 'dvsys_security$at2' во второй базе данных и хочу отреплицировать таблицы 'dvsys_security$at1' и 'dvsys_security$at2', то создаваемая репликационная схема выдает ошибку:


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 [0%] Preparing table '[dbo].[dvsys_security$at2]' for merge replication
2007–08–21 09:16:49.38 [0%] The replication agent had encountered an exception.
2007–08–21 09:16:49.38 Source: Replication
2007–08–21 09:16:49.38 Exception Type: Microsoft.Sql Server?.Replication.Replication Agent Sql Exception?


2007–08–21 09:16:49.38 Exception Message:
There is already an object named
'MSmerge_default_constraint_for_rowguidcol_of_2073058421'
in the database.


2007–08–21 09:16:49.38 Could not create constraint. See previous errors.
2007–08–21 09:16:49.38 Message Code: 2714
2007–08–21 09:16:49.38

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
«C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Repl Data?\unc\PANSHINI$S200
5_AT_SEC\20070821173223\dvsys_security_2.bcp» -e “errorfile” -t”\n<x$3>\n” -r”\n
<,@g>\n» -m10000 -SPANSHINI\s2005 -T -w


Starting copy...
SQLState = HY000, Native Error? = 0
Error = [Microsoft][SQL Native Client]Unexpected EOF encountered in BCP data-file


0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 15

3.Незавершение процесса репликации полностью

Ошибка может быть произвольной...



2007–08–22 05:40:53.707


The merge process could not enumerate changes at the 'Publisher'.
When troubleshooting, restart the synchronization with verbose history
logging and specify an output file to which to write.


2007–08–22 05:40:53.707 Category:NULL
Source: Merge Replication Provider
Number: -2147200999


Message: The merge process could not enumerate changes at the 'Publisher'.
When troubleshooting, restart the synchronization with verbose history
logging and specify an output file to which to write.


2007–08–22 05:40:53.707 Category:SQLSERVER
Source: PANSHINI\S2005
Number: 25007
Message: The merge process failed because the schema of the article at the Publisher
and Subscriber do not match.
This could be because of pending DDL changes that need to be propagated
to the Subscriber. Retrying the merge could fix the problem.




Number: 0
Message: Batch send failed
2007–08–22 05:45:24.526 Category:NULL
Source: Microsoft SQL Native Client
Number: 2627
Message: Violation of PRIMARY KEY constraint 'pk_dvsys_security'.
Cannot insert duplicate key in object 'dbo.dvsys_security'.
2007–08–22 05:45:24.526 Category:NULL
Source: Microsoft SQL Native Client
Number: 20253
Message: To obtain an error file with details on the errors encountered when initializing the subscribing table, execute the bcp command that appears below. Consult the BOL for more information on the bcp utility and its supported options.
2007–08–22 05:45:24.526 Category:NULL
Source:
Number: 20253
Message: bcp “at1"."dbo"."dvsys_security” in «C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Repl Data?\unc\PANSHINI$S2005_AT_SEC\20070822094562\dvsys_security_2.bcp” -e “errorfile” -t”\n<x$3>\n” -r”\n<,@g>\n” -m10000 -SPANSHINI\s2005 -T -w




Message
2007–08–22 06:48:43.311 The merge process could not enumerate changes at the 'Publisher'. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
2007–08–22 06:48:43.311 Category:NULL
Source: Merge Replication Provider
Number: -2147200999
Message: The merge process could not enumerate changes at the 'Publisher'. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
2007–08–22 06:48:43.311 Category:SQLSERVER
Source: PANSHINI\S2005
Number: 25007
Message: The merge process failed because the schema of the article at the Publisher
and Subscriber do not match. This could be because of pending DDL changes that need to 
be propagated to the Subscriber. Retrying the merge could fix the problem.
2007–08–22 06:48:43.311 Category:NULL
Source: Merge Replication Provider
Number: -2147200996
Message: The process was successfully stopped.




Message
2007–08–22 09:45:37.174 [80%] [0 sec remaining] Enumerating inserts and updates in article 'dvsys_security'
2007–08–22 09:45:37.315 The merge process could not store conflict information for article 'dvsys_security'. Check the publication properties to determine where conflicts records are stored. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
2007–08–22 09:45:37.330 Category:NULL
Source: Merge Replication Provider
Number: -2147200992
Message: The merge process could not store conflict information for article 'dvsys_security'. Check the publication properties to determine where conflicts records are stored. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
2007–08–22 09:45:37.330 Category:SQLSERVER
Source: PANSHINI\S2005
Number: 2812
Message: Could not find stored procedure ''.




Кстати, если вы получите 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
F72_46A4_8646_86754CD8087C” in «C:\Program Files\Microsoft SQL Server\MSSQL.1\MS
SQL\Repl Data?\unc\PANSHINI$S2005_AT_DOCSVISION_COMMON_\20070830173730\dvtable_{AE
691F3c4822461_7.bcp» -e “errorfile” -m10000 -Spanshini\S2005 -T -w
An error occurred while processing the command line.


Причем, если вы пытаетесь заключить все это в скобки, то натыкаетесь на другие грабли


Msg 14027, Level 11, State 1, Procedure sp_addmergearticle, Line 239
[dbo].dvtable_{AE691F32-AF72–46A4–8646–86754CD8087C}$] does not exist in the current database.
Msg 14027, Level 11, State 1, Procedure sp_addmergearticle, Line 239
[dbo].dvtable_{81100533–0547–416D-B2C3–0BDCB238E60C}$] does not exist in the current database

6.Никогда
Не использовать системные хранимые процедуры, написанные разработчиками Microsoft

в теле курсора. Пользуйтесь перебором while() или еще как нибудь.

7.И надеюсь последнее
Если у вас появились ошибки типа: incorrect syntax near 'and'

Просто удалите содержимое MSmergecontent.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]

Рейтинг@Mail.ru Яндекс цитирования Арбинада - софтотворение и софтостроение