2012-03-29 3 views
1

Я установил транзакционную репликацию и разрешил инициализацию из резервной копии из-за ограничений полосы пропускания (так что не создавались моментальные снимки). Теперь мы получаем эту ошибку в базе данных Publication, когда запускается приложение, которое вставляет данные в базу данных (ну, оно выполняется в течение короткого времени, а затем останавливается с ошибкой). Монитор репликации не показывает ошибок, поэтому он не является несогласованностью между публикацией и подпиской. Это также не вызывает беспокойства по поводу автогенерированных идентификаторов (то есть с использованием столбца Identity), так как эта таблица основывается на datestamp как PK. Ошибка:MSSQL - репликация и нарушение ограничений PK

System.Data.SqlClient.SqlException: Нарушение ограничения PRIMARY KEY ''. Невозможно вставить дублирующий ключ в объект 'dbo.'. Заявление было прекращено.

Может ли настройка репликации сделать что-то в базе данных источника/публикации, вызвав это? Может ли это быть вызвано высокой задержкой для базы данных подписчика? Поскольку я не вижу ошибок в мониторе репликации, я даже не уверен, что эта ошибка возникла в продолжении установки репликации.

Как устранить это?

ответ

0

1. Убедитесь, что таблица/статьи вы тиражирования создается с настройкой репликации в PK

До:

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1) NOT NULL, 

После:

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 

Вы должны делать то же самое для иностранных ключей

2. Монитор репликации должен показать вам сообщение об ошибке

  • Выберите публикацию.
  • Выберите подписку в правом окне и откроется окно подписки .
  • Выберите дистрибьютора для подписчика История (может быть недоступна по типам подтягивания подписки, то вам необходимо отправить подписывающие серверы ).
  • На этой вкладке будут отображаться транзакции агента распространения. Вы можете изменить параметр профиля агента «HistoryVerboseLevel» на 2, чтобы получить более подробную информацию. Если вы это сделаете, не забудьте остановить и запустить агент распространения, чтобы увидеть изменения. Это можно сделать без риска потери данных репликации.
Смежные вопросы