Проблема
Рассмотрим следующий сценарий.
- В Microsoft SQL Server 2008 R2 имеется таблица с двумя или более столбцами типа данных битов.
- Вы создаете кластеризованный индекс, содержащий два или более столбцов типа данных битов в таблице.
- Вы создаете некластеризованный индекс для любого столбца и задаете параметр DATA_COMPRESSION.
В этом случае возникает следующая ошибка:
Примечание
Сообщение 1944, уровень 16, состояние 1, номер строки<>
Индекс "<Имя> индекса" не был создан. Этот индекс имеет длину ключа не менее -<Length> байт. Максимальная допустимая длина ключа — <Длина> байтов.
Причина
Проблема возникает из-за того, что требования к пространству для столбцов типа битовых данных в этом сценарии вычисляются неправильно.
Решение
Эта проблема была исправлена в следующем накопительном обновлении SQL Server.
Накопительный пакет обновления 13 для SQL Server 2008 R2 с пакетом обновления 2 (SP2) /help/2967540
Сведения о накопительных обновлениях для SQL Server
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
Временное решение
Чтобы обойти эту проблему, измените тип данных столбцов с bit на tinyint.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».