Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Microsoft SQL Server 2012 (SP3-CU5) (KB3180915) - 11.0.6544.0 (X64)
Aug 29 2016 14:00:09
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)


С какой-то случайностью получаю ошибки дублирования ключа, хотя никакого дублирования гарантированно нет. Причем, не для каждой таблицы.

Также получил дублирование при попытке создать кластерный ключ для автоинкрементного BIGINT поля, вываливается с разными значениями ключа, таблица порядка 250млн строк. Кто-нибудь знает, как побороть этот баг?
7 окт 16, 13:23    [19755158]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Владислав Колосов
С какой-то случайностью получаю ошибки дублирования ключа, хотя никакого дублирования гарантированно нет.
Чем именно гарантированно отсутвие дублирования?

Владислав Колосов
Также получил дублирование при попытке создать кластерный ключ для автоинкрементного BIGINT поля, вываливается с разными значениями ключа, таблица порядка 250млн строк.
DBCC CHECKDB/CHECKTABLE?
7 окт 16, 13:27    [19755189]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
o-o
Guest
а гарантия недублирования как выглядит?
---
при неудачной попытке создания ПК ведь он называет дублируемое значение,
вы вывели строки с этим значением?
можем мы увидеть в двух окнах картинкой?
1 окно: ошибка создания ключа
2 окно: секект из этой таблицы с условием равенства, где подставлено значение из 1ого окна
7 окт 16, 13:29    [19755200]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Проверено так:

select id from dbo.tbl1 group by id having count(id)>1

причем id NOT NULL.
7 окт 16, 13:32    [19755222]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
o-o,

автор
при неудачной попытке создания ПК ведь он называет дублируемое значение,
вы вывели строки с этим значением?


Да, значение единственное в таблице.
7 окт 16, 13:33    [19755229]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Мне помнится, что я встречал сообщение о похожей проблеме, но не помню деталей.
7 окт 16, 13:36    [19755261]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Настройки такие:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.R1 ADD CONSTRAINT
	PK_RES_HIST PRIMARY KEY CLUSTERED 
	(
	ID
	) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.RES_HIST SET (LOCK_ESCALATION = TABLE)
GO
COMMIT


Может быть как-то параллелизм отключить?
7 окт 16, 13:39    [19755283]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Сорри, опечатка там. R1 = RES_HIST
7 окт 16, 13:41    [19755302]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Владислав Колосов
Проверено так:

select id from dbo.tbl1 group by id having count(id)>1

причем id NOT NULL.
А какой код приводит к сообщению об ошибке?
7 окт 16, 13:41    [19755303]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Вот выше код привел...
Обнаружил, что у таблицы тип сжатия ROW.
7 окт 16, 14:16    [19755548]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Владислав Колосов
Вот выше код привел...
Обнаружил, что у таблицы тип сжатия ROW.
Т.е. падает на построении индекса?

Нет ли уникального некластерного индекса по id?

Сообщение было отредактировано: 7 окт 16, 14:32
7 окт 16, 14:28    [19755629]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Гавриленко Сергей Алексеевич,

да, падает при построении каждый раз с разными значениями ключа. Индексов больше нет, все удалил. Разжал таблицу, пробую создать ещё раз.
7 окт 16, 14:32    [19755656]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Владислав Колосов
Гавриленко Сергей Алексеевич,

да, падает при построении каждый раз с разными значениями ключа. Индексов больше нет, все удалил. Разжал таблицу, пробую создать ещё раз.
прочекайте базу. Сжатие тут вряд ли при чем.
7 окт 16, 14:32    [19755661]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Addx
Member

Откуда:
Сообщений: 957
На базе работают в это время?
7 окт 16, 15:38    [19756171]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Насчет пользователей - хороший вопрос, по идее, не должны заходить. Но разве ALER TABLE не накладывает X блокировку на таблицу кроме Sch-S и Sch-M?

Разжатие не причем, действительно.
Таблицу чекнул, все в порядке.
Попробую теперь на ночь базу чекнуть.

Перезалил таблицу в другую, с предварительно созданным PRIMARY KEY, ошибок не было.
7 окт 16, 16:23    [19756451]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
o-o
Guest
connect: Violation of PRIMARY KEY constraint with identity column
Closed as Not Reproducible
17 окт 16, 22:54    [19792552]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
o-o,

если при вставке и есть такой момент, но я выполнял ADD CONSTRAINT. Но природа заболевания может быть общей. Спасибо за информацию.
18 окт 16, 13:30    [19794507]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка DUPLICATE KEY для кластерного ключа  [new]
o-o
Guest
Владислав Колосов,
мораль тут не в этом.
в соседней теме SQL Server 2012 SP3 - значение Identity прыгнуло ниже максимального в таблице
значения identity прыгают ниже максимального значения в таблице.
где-то они(MS) накосячили в новой реализации identity (2012 and above),
но воспроизвести невозможно -> не пойман, не вор -> Closed as Not Reproducible
как workaround TF 272, в надежде, что отмена кэширования поможет избежать баговину
18 окт 16, 13:44    [19794592]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить