【发布时间】:2020-09-30 11:39:15
【问题描述】:
我手头有一个 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,它们是否也适用于我的数据库?
【问题讨论】:
-
有些功能有,有些没有(大部分没有)。您找出最简单的方法是运行该语句,但我很确定它不会起作用。 (旁注
RESUMABLE是在 2017 年而不是 2019 年添加的)。 -
这些功能通常是这样的(它是相同的引擎和相同的数据库文件格式),但是否接受 语法 是一个废话。有时,您可以通过在
master中运行带有sp_前缀的过程中的语句来解决此问题(不过,这是一个不受支持的 hack)。 -
谢谢你们,我不敢相信微软不清楚这一点:¦
-
这是因为该功能主要用于未进行持续开发的数据库。 Microsoft recommend:“对于新的开发工作,或者当现有应用程序需要使用新功能时,例如......计划将数据库兼容性级别升级到最新可用。”
-
那么您应该首先在您的开发和/或其他测试环境中完成这些测试,然后担心新功能的实现之后 @FrancescoMantovani。更新到新版本时,您需要确保在考虑新功能之前先维护现有功能。
标签: sql-server tsql indexing sql-server-2019 compatibility-level