2015-04-26 3 views
3

Я запускаю эту команду на SQL Azure.Ошибка кластерного индекса в Azure для таблицы с кластеризованным индексом

DELETE FROM dbo.Users 

Я получаю эту ошибку.

Msg 40054, уровень 16, состояние 1, строка 1
Таблицы без кластерного индекса не поддерживается в этой версии SQL Server. Создайте кластерный индекс и повторите попытку.

Затем я пытаюсь создать кластеризованный индекс.

CREATE UNIQUE CLUSTERED INDEX Idx_Users ON dbo.Users(Id); 

Я получаю эту ошибку.

Msg 1902, Level 16, State 3, 4 линия
Невозможно создать более одного кластерного индекса по таблице 'dbo.Users. Перед созданием другого кластерного индекса «PK_dbo.Users» удалите существующий кластерный индекс.

У меня нет или нет кластеризованного индекса?

+0

Попробовали ли вы сбросить, а затем создать индекс? –

+0

Можете ли вы усечь стол вместо того, чтобы удалять все в нем? –

+0

Я могу усечь, но мне пришлось удалить ограничения внешнего ключа, чтобы это произошло. Я бы хотел избежать этого в следующий раз. –

ответ

1

У меня была аналогичная проблема, когда я не смог удалить записи из таблицы.

После прочтения этого сообщения, SQL Azure not recognizing my clustered Index, в паре с вашим сообщением Я проверил зависимости через MSSMS на моей таблице Security_User; таблица 0-n отношений, Security_UserHistory, имела FK-ссылку на эту таблицу. Эта ссылка не была проиндексирована и (как ни странно) вызвала ошибку.

После применения CLUSTERED INDEX к таблице FK Security_UserHistory, ссылаясь на таблицу PK Security_User, проблема была решена.

enter image description here

Я хотел бы добавить Microsoft некоторую ясность в сообщении об ошибке, так как это указывает на проблему лежит на столе удаляемого строки из.

+0

Вы говорите, что мне нужно вручную создать индекс для каждой ссылки FK на моих таблицах? –

+0

Я говорю, что для моего случая ошибка была результатом отсутствия кластерного индекса в FK-таблице. Был связанный триггер, который записывал бы в Security_UserHistory - возможно, это тоже имело к этому отношение. Однако просто удаление триггера не исправило проблему, почему я не думал упоминать об этом раньше. –

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