Изменение параметров сортировки столбцов - уникальный индекс дублируется - PullRequest
0 голосов
/ 30 сентября 2019

Недавно у меня возникли проблемы со сравнением строк, включая смайлики с моей базой данных SQL Server, и поэтому я изменил параметры сортировки всей базы данных с SQL_Latin1_CP1_CI_AS на Latin1_General_100_CI_AS.

Я понимаю, что все существующие таблицы / столбцы по-прежнему остаются старыми, поэтомуЯ должен изменить их вручную. При изменении одной из таблиц со сложным первичным ключом: [KeyA (int), KeyB (nvarchar(100))] я сталкиваюсь с этой ошибкой:

Оператор CREATE UNIQUE INDEX завершен, поскольку для имени объекта 'dbo.MyTable был найден повторяющийся ключ'и индексное имя' PK_MyTable '. Значение дубликата ключа (7792, # صلح‌گرا).

Я попытался создать группу SELECT с count(*) по двум ключам, но, похоже, не нашел никаких допустимых дубликатов. Что я должен сделать, чтобы решить вышеуказанное?

Отредактировано:

Следующий запрос не дает результата, так как я уже установил пару PK перед изменением параметров сортировки:

SELECT KEYA, KEYB, COUNT(*)
FROM MYTABLE
GROUP BY KEYA, KEYB
HAVING COUNT(*) > 1

Отредактировано (2):

Спасибо за вклад каждого. Теперь я вижу дубликаты, запрашивая новое сопоставление. Вот пример результатов. Кажется, Latin1_General_100_CI_AS не очень хорошо обрабатывает персидские символы (или, возможно, RTL). Но проблема в том, что это поле может содержать много разных типов языков, например, английский, французский, немецкий, китайский, японский и т. Д. Могут существовать все виды акцентов, а также языки JFK и RTL. Есть ли какое-то сопоставление, которое я должен использовать, чтобы справиться с этим? Query Result with destination collation specified

1 Ответ

1 голос
/ 30 сентября 2019

Как уже упоминал Дейл, вы используете старое сопоставление в этом запросе group by.

Используйте COLLATE, чтобы перейти к новому сопоставлению в запросе и проверить наличие дубликатов.

SELECT KEYA COLLATE Latin1_General_100_CI_AS, 
       KEYB COLLATE Latin1_General_100_CI_AS, 
       COUNT(*)
FROM MYTABLE
GROUP BY KEYA COLLATE Latin1_General_100_CI_AS, 
         KEYB COLLATE Latin1_General_100_CI_AS
HAVING COUNT(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...