Dadadumdums
@Dadadumdums
веб-разработчик, мечтающий стать DBA

Как исправить Violation of PRIMARY KEY constraint с составным PK?

Исходные данные: есть сервер distribution, есть сервер subscriber.
Настроена репликация транзакциями с distribution на subscriber.
Replication monitor выдает следующее:

Violation of PRIMARY KEY constraint 'PK_dboSM_AlarmsStatistics'. Cannot insert duplicate key in object 'dbo.SM_AlarmsStatistics'. The duplicate key value is (ExceedingCur, 6061, 0). (Source: MSSQLServer, Error number: 2627)


в таблице SM_AlarmsStatistics составной индекс из трех колонок в которых должно содержаться (ExceedingCur, 6061, 0) из ошибки выше.

если выполнить
use distribution
go
exec sp_browsereplcmds '0x000064A0000048E5000A00000000', '0x000064A0000048E5000A00000000'
--по коду ошибки в Replication monitor
go


то увидим на чем именно останавливается репликация(это ведь так работает?)
Валится на пункте 2
1. {CALL [sp_MSins_dboSM_States] (677390,0,6061,2016-05-18 00:00:00.000,'ExceedingCur','Yes',1,1)}
2. {CALL [sp_MSins_dboSM_AlarmsStatistics] (N'ExceedingCur',6061,0,2016-05-18 00:00:00.000,1,1,677390)}

Я пробовал сделать truncate в этой таблице, но ошибка остается, хоть таблица и пустая.

Пробовал так же в эту таблицу вручную вставлять значения, все отлично вставляется в подписчике
insert into SM_AlarmsStatistics values(N'ExceedingCur',6061,0,convert(datetime, '2016-05-18 00:00:00.000',121),1,1,677390)


Можно ли обновить как то составной индекс(что-то типа DBCC CHECKIDENT (@fullTableName, RESEED, @nextIdToGo)) или что сделать в таком случае?
  • Вопрос задан
  • 3503 просмотра
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Как исправить Violation of PRIMARY KEY constraint с составным PK?
Настроена репликация транзакциями…
Попробуйте выключить репликацию столбца, таблицы, базы (поочерёдно).
составной индекс
Используйте суррогатный ключ.
из трех колонок
Сделайте уникальный ключ, исключительно для проверки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы