我有一个创建一些动态表的存储过程。如果 SQL Server 的主机版本支持列存储索引,那么我想创建一个列存储索引,否则回退到只创建一个普通的行存储索引。
我找到了该dm_db_persisted_sku_features
表,但这只是告诉您当前正在使用哪些非标准功能,而不是支持哪些功能:
SELECT * FROM sys.dm_db_persisted_sku_features
如何从查询内部确定 SQL Server 版本是否支持列存储索引?
我有一个创建一些动态表的存储过程。如果 SQL Server 的主机版本支持列存储索引,那么我想创建一个列存储索引,否则回退到只创建一个普通的行存储索引。
我找到了该dm_db_persisted_sku_features
表,但这只是告诉您当前正在使用哪些非标准功能,而不是支持哪些功能:
SELECT * FROM sys.dm_db_persisted_sku_features
如何从查询内部确定 SQL Server 版本是否支持列存储索引?
您可以检查当前数据库的兼容性级别,以查看它是否与 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'
存在于不支持列存储索引的版本上(例如 2014 Express)