2017-01-05 2 views
2

На одном из моих таблиц в SQL Server, в индексах папки у меня есть кластерного индекс, сделанный из трех столбцов таблицы, но есть также Unique флажка, когда я иду в окно свойств на том, что индекс. Мой вопрос заключается в командах T-SQL, как я говорю, что он отбрасывает часть уникальности и все еще сохраняет индекс? Возможно ли это?Удаление Единственности из индекса

+1

@ Lashane Я видел это, но это то, что нужно сбросить весь индекс. Я хочу сохранить индекс и судить о его единстве. – Bohn

+2

'Индексы, созданные в результате ограничения PRIMARY KEY или UNIQUE, не могут быть удалены с помощью этого метода. Вместо этого ограничение должно быть удалено. Чтобы удалить ограничение и соответствующий индекс, используйте ALTER TABLE с предложением DROP CONSTRAINT в Transact-SQL. ' –

+1

@Bohn Вы не можете - индексы' Clustered' * должны * быть уникальными. Вам нужно будет отбросить индекс и создать новый «NonClustered». – Siyual

ответ

5

Вы не можете изменять индекс от уникального до не уникального. Вы можете установить индекс для игнорирования дубликатов.

Docs: https://msdn.microsoft.com/en-us/library/ms188388.aspx

Вы можете только воссоздают индекс с падением и создания команды.

DROP INDEX IndexTest.ci_Test; 
CREATE INDEX ci_Test ON IndexTest(Key); 

Но вы должны иметь кластеризованный индекс для одного столбца (например, для нового первичного ключа автоинкремента). И вы можете форсировать уникальность с уникальным некластеризованным индексом.

Смежные вопросы