5

У меня есть хранимая процедура, которая создает некоторые динамические таблицы. Если индексы столбцов поддерживаются в хост-версии SQL Server, тогда я хочу создать индекс столбцов, в противном случае - резервное копирование только обычного индекса хранилища строк.Запрос, чтобы определить, поддерживает ли текущая версия SQL Server индексы столбцов

Я нашел dm_db_persisted_sku_features таблицу, но это просто говорит вам, что в настоящее время используются нестандартные функции, а не то, что поддерживается:

SELECT * FROM sys.dm_db_persisted_sku_features 

Как я могу определить, внутри запроса, если SQL Server индексы столбцов столбцов версии и версии?

+0

Почему не проверяют * выпуск *? Только выпуски Enterprise поддерживают столбцовые хранилища до SQL Server 2016 SP1 –

+0

Я мог бы, но потом мне пришлось бы перемещаться в капризах версий SQL Server/пакетов обновления. Плюс это не очень перспективное решение. –

+0

Собственно, это так. До 2016 SP1 только выпуски Enterprise и Developer поддерживали колонки. Вы можете проверить это с помощью 'select SERVERPROPERTY ('Edition')'. 2016 SP1 добавил поддержку всего. –

ответ

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)

+0

Уровень совместимости выиграл Помогите. Даже с уровнем совместимости 10 SQL Server 2014+ будет [разрешать индексы столбцов] (https://msdn.microsoft.com/en-us/library/bb510680.aspx). Они будут обработаны в режиме строки, хотя –

+0

Если ОП хочет знать, должен ли он __should__ создавать индексы столбцов в базе данных, не приведет ли это к лучшему курсу действий? – SqlZim

Смежные вопросы