Исправить нарушенную репликацию транзакций в SQL Server 2005

Я настроил репликацию транзакций в SQL Server 2005 и отключил триггер DDL, который был создан при настройке репликации. Немного поиграв (чтобы понять, что произойдет), транзакция прервана, потому что я изменил столбец на издателе на VARCHAR, то есть INT на подписчике. Я нашел две процедуры, которые помогут пропустить эту глючную транзакцию

EXEC sp_helpsubscriptionerrors
    @publisher='DB1',@publisher_db='repl_test',@publication='repl_test_table',
    @subscriber='DB2',@subscriber_db='repl_test'

Это дает мне набор результатов, в котором я вижу ошибку (сбой при преобразовании VARCHAR в INT)

id time                    [...] error_code error_text                                             xact_seqno
24 2012-02-23 08:33:35.313 [...] 8114       Fehler beim Konvertieren des varchar-Datentyps in int. 0x00139791000CC79C000600000000
24 2012-02-23 08:33:35.310 [...] 8114       Fehler beim Konvertieren des varchar-Datentyps in int. 0x00139791000CC79C000600000000
[...]

и я использую xact_seqno из результата (0x00139791000CC79C000600000000) для выполнения следующей процедуры на следующем шаге

EXEC sp_setsubscriptionxactseqno
    @publisher='DB1',@publisher_db='repl_test',@publication='repl_test_table',
    @xact_seqno=0x00139791000CC79C000600000000

который скажет:

Ошибка 20017 - Подписка не существует на подписчике.

Хм?


person rabudde    schedule 23.02.2012    source источник


Ответы (2)


Аххх, взглянув на внутренний код sp_setsubscriptionxactseqno, можно увидеть, что эта процедура должна выполняться в базе данных подписки (а не в базе данных distribution, где должен выполняться sp_helpsubscriptionerrors) ... но это не задокументировано в MSDN.

person rabudde    schedule 23.02.2012

Сработало ли выполнение процедуры sp_setsubscriptionxactseqno на подписчике?

Вы также можете использовать параметр агента распространителя -SkipErrors 8114, чтобы временно пропустить этот тип ошибки.

Пропуск ошибок при репликации транзакций

person Brandon Williams    schedule 23.02.2012