Я настроил репликацию транзакций в 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 - Подписка не существует на подписчике.
Хм?