ИСПРАВЛЕНИЕ. Не удается создать сжатый некластеризованный индекс в таблице с кластеризованным индексом с двумя или более битовыми столбцами

Применяется к
SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard

Проблема

Рассмотрим следующий сценарий.

  • В 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, перечисленных в разделе «Относится к».