none
Ошибка при разрешении конфликта RRS feed

  • Вопрос

  • Привет.

    Имеется два pull подписчика и один издатель. Версия серверов  Microsoft SQL Server 2005 - 9.00.4035.00 (X64)   Nov 24 2008 16:17:31   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2) .

    Возник конфликт на одном подписчике и не может разрешиться, выдает следующую ошибку

    Error messages:

    The merge process could not store conflict information for article 'таблица'. 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. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147200992)
    Get help: http://help/MSSQL_REPL-2147200992

    Procedure or function MSmerge_cft_sp_C443DF0994B54DDACE0E1499F9A1444F has too many arguments specified. (Source: MSSQLServer, Error number: 8144)
    Get help: http://help/8144

    The Merge Agent encountered an error when executing code in the 'UpdateConflictsHandler' method implemented in the business logic handler 'C:\Program Files\Microsoft SQL Server\90\COM\CustomAssembly.dll'. Ensure that the overridden 'UpdateConflictsHandler' method has been properly implemented in the business logic handler. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147199411)
    Get help: http://help/MSSQL_REPL-2147199411

    The process was successfully stopped. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147199481)
    Get help: http://help/MSSQL_REPL-2147199481

    Пробывал вручную резрешить конфликт с помощью View Conflict, он пропадает из списка конфликтов, но при следующем отрабатывании репликации опять появляется в списке. Конфликтов несколько и они появляются по кругу.

    Еще одна интересная особенность, View Conflict показывает, что конфлик разрешен, репликация падает с ошибкой.

    В данном случае используется самописная логика для решения конфликтов, она отрабатывает корректно для данного объекта и для остальных объектов тоже, но вот почему то для данной строки, выдает ошибку.

    Если у кого есть идеи, прошу высказать.

    20 июля 2011 г. 4:10

Ответы

  • Как указано в ошибке "Procedure or function MSmerge_cft_sp_C443DF0994B54DDACE0E1499F9A1444F has too many arguments specified. (Source: MSSQLServer, Error number: 8144)" проблемма находится в данной процедуре. Анализ показал, что данная процедара отличается по параметрам и тексту от процедуры на издателе и втором подписчике, также отличалась структура таблицы конфликтов для объекта, поля одного не хватало. Данные отличия позволяли решить конфликт, но не позволяли его записать для историчности в таблицу конфликтов объекта на подписчике в результате репликация отрабатывала с ошибкой.

    Решение:

    Добавил поле в таблицу конфликтов и изменил текст процедуры, взяв его с издателя, предварительно поменяв object_id объекта в процедуре.

    • Помечено в качестве ответа Qumer 21 июля 2011 г. 4:05
    21 июля 2011 г. 4:05