Задать вопрос
zvepb
@zvepb

Как обойти ошибку создания уникального индекса?

Ошибка при переходе из файловой 1С 7.7 на MS SQL при загрузки данных в SQL:
Message: [Microsoft] [ODBC SQL Server Driver] [SQL Server] Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем "dbo.SC31" и индекса с именем "IDD".

Были проверены и переименованы дубли документов, с помощью своей обработки.
Ошибка осталась, хотя по всем объектам дубли больше не найдены.
Можно ли со стороны SQL это решить? Например, с помощью скрипта SQL который бы отслеживал запись и при возникновении ошибки переименовал объект допустим?
  • Вопрос задан
  • 108 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@Dementor
программист, архитектор, аналитик
Можно ли со стороны SQL это решить ? Например, с помощью скрипта SQL который бы отслеживал запись и при возникновении ошибки переименовал объект допустим ?

Т.е. вы предлагаете сделать триггерную функцию, которая во время добавления данных делала проверку их уникальности и вносила изменения в данные при наличии проблем? Звучит сложно. Ведь вам всего лишь один раз нужно файловую базу залить на скуль.

Ошибка осталась, хотя по всем объектам дубли больше не найдены.

Я бы на ваш месте не угадывал, а проверил бы поля из индекса IDD для таблицы dbo.SC31 - если скуль ругается, то вы точно что-то пропустили. Сделайте SELECT с GROUP BY этим полям и HAVING COUNT(*) > 1
Ответ написан
Комментировать
@elderl
Никак.
IGNORE_DUP_KEY работает только при вставке данных. При создании индекса не работает.
Ответ написан
Комментировать
@darst
Так у вас ошибка не в табличных данных, а в индексе таблицы.
Пересоздайте индекс заново.
Также на инфостат есть статья по индексам.
Ответ написан
Комментировать
@Miron11
Пишу sql 20 лет. Срок :)
Найдите значения, которые повторяются. И посмотрите, если они на самом деле нужны.
Возможно дело в collation, по умолчанию, вполне возможно, 1С воспринимало
abc
ABC
как две уникальные записи, SQL Server по умолчанию применяет collation в которой регистры букв, верхний и нижний, игнорируются.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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