问题描述
我手上有一个sql Server 2019实例,但是其中的所有数据库都设置为兼容级别110(sql Server 2012)。
我想用选项重建一些索引:
ALTER INDEX ALL ON [MyIndexName]
REBUILD WITH(FILLFACTOR = 80,ONLINE = ON,SORT_IN_TEMPDB = ON
RESUMABLE = ON,OPTIMIZE_FOR_SEQUENTIAL_KEY = ON);
我的问题是,由于RESUMABLE = ON
和OPTIMIZE_FOR_SEQUENTIAL_KEY = ON
是sql Server 2019中引入的功能,即使它们仍处于兼容级别110,它们也将适用于我的数据库吗?
解决方法
答复是:我们无法分辨。
- “ […]新功能可能在较旧的兼容级别下可以使用,但要小心SET选项。” (https://docs.microsoft.com/en-us/archive/blogs/sqlserverstorageengine/whats-the-difference-between-database-version-and-database-compatibility-level)
- “ […]对于以较低兼容性级别运行的现有数据库,只要应用程序不需要利用仅在较高数据库兼容性级别中可用的增强功能,它便是维护先前数据库的有效方法兼容性级别。对于新的开发工作,或者当现有应用程序需要使用诸如智能查询处理之类的新功能以及某些新的Transact-SQL时,请计划将数据库兼容性级别升级到最新的可用版本。有关更多信息,请参阅兼容性级别和数据库引擎升级。” (https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver15)
我还要求在帖子上Randolph West回复:“ 某些功能适用于实例级别,而某些功能仅适用于具有正确兼容性级别的数据库。对顺序键进行优化是150级功能。“
因此,我们只需要按照上面的注释中的建议尝试测试环境。