Запрос, чтобы определить, поддерживает ли текущая версия SQL Server индексы columnstore
У меня есть хранимая процедура, которая создает динамические таблицы. Если индексы columnstore поддерживаются в основной версии SQL Server, я хочу создать индекс columnstore, в противном случае можно вернуться к созданию обычного индекса хранилища строк.
Я нашел dm_db_persisted_sku_features
Таблица, но это просто говорит вам, какие нестандартные функции в настоящее время используются, а не то, что поддерживается:
SELECT * FROM sys.dm_db_persisted_sku_features
Как я могу изнутри запроса определить, поддерживают ли версия и выпуск SQL Server индексы columnstore?
1 ответ
Решение
Вы можете проверить уровень совместимости текущей базы данных, чтобы увидеть, совместима ли она с функциями 2012+.
select
ColumnStore = case
when compatibility_level >= 110
and (serverproperty ('edition') like 'Enterprise%'
or serverproperty ('edition') like 'Developer%')
then 1
when compatibility_level >= 130
and serverproperty ('productlevel') != 'RTM'
then 1
else 0
end
from sys.databases
where name = db_name()
нота:
SELECT * from sys.system_objects where name='column_store_dictionaries'
существует в выпусках, которые не поддерживают индексы columnstore (например, 2014 Express)