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