Уменьшение размера типа данных приводит к тому, что индекс превышает максимальный размер?
Сегодня я сталкиваюсь со странным сообщением. Я не уверен, что это просто ошибка:
Таблицы создаются ASP.NET Identity. Тем не менее, они используют nvarchar(450)
для идентификатора, который я не могу использовать в других таблицах, потому что индекс превышает 900 байтов. Поэтому я пытаюсь уменьшить его, но как мог PK_AspNetUserRoles
быть создан в первую очередь? Это просто ошибка SSMS?
1 ответ
Какая у вас версия SSMS? ИМХО, это ошибка, я не могу воспроизвести эту проблему в 12.0.4100.1.
Вы не можете изменить тип столбца, не воссоздав индекс, поэтому может появиться следующая ошибка:
Сообщение 5074, уровень 16, состояние 1, строка 4 Индекс PK_AspNetUserRoles зависит от столбца UserId. Сообщение 4922, уровень 16, состояние 9, строка 4 ALTER TABLE ALTER COLUMN UserId не выполнен, так как один или несколько объектов имеют доступ к этому столбцу.
Но моя SSMS просто молча сделала следующее:
- создайте новую таблицу с тем же именем и префиксом tmp, используя столбец nvarchar(150)
- вставить в новую таблицу выберите * из исходной таблицы
- сбросить оригинальный стол
- переименовать новую таблицу в старую таблицу
- создать индекс PK на нем
Ошибка не отображалась