Не удается создать индекс хранилища столбцов

#sql #sql-server #database #performance #tsql

#sql #sql-сервер #База данных #Производительность #tsql

Вопрос:

Когда я пытаюсь создать индекс хранилища столбцов, используя следующий синтаксис

 create nonclustered columnstore index indx1 on table1 (row1, row2) 
  

Я получаю сообщение об ошибке в ключевом слове ‘columnstore’ incorrect syntax near columnstore. Expecting INDEX и другое сообщение об ошибке в строке ‘row1’ incorrect syntax, expecting "(", or SELECT

Я нахожусь в SQL server 2012. Я пробовал это на временных таблицах и постоянных таблицах и все равно получаю эти ошибки. Что происходит не так?

Спасибо

Комментарии:

1. Опубликуйте полный исполняемый скрипт T-SQL, демонстрирующий проблему.

2. каков уровень совместимости вашей базы данных?, row1, row2 ваши имена столбцов?

3. @Lamak да, это имена столбцов. Уровень совместимости равен 100, поэтому SQL 2008… возможно, в этом проблема. Однако мой SSMS — 2012, поэтому, возможно, синтаксис регистрируется, но он не работает при компиляции…

4. Ну, не имеет значения, является ли ваша версия SQL Server Management Studio 2014, если база данных имеет уровень совместимости 100, тогда эта база данных имеет только функции SQL Server 2008, следовательно, нет индексов хранилища столбцов

Ответ №1:

SQL 2008

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

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