sql-server - SQL Server 2019 :: 功能是否适用于以前的兼容性级别?
问题描述
我手上有一个 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 级功能。 ”
因此,我们只需要按照上面评论中的建议在测试环境中进行尝试。
推荐阅读
- android - Fragments - 指定的孩子已经有一个父母。在片段导航时,您必须首先在孩子的父母上调用 removeView()
- android - 如何在 Kotlin 中模拟 getSting 资源
- c++ - unordered_set 可以为节点和桶列表使用不同的分配器吗?
- javascript - 在 React 中使用 Router 将数据从一个页面传递到另一个页面
- android - 文本对齐 - Android GravityFlags.Right 切断每行的第一个字符
- sql-server - SSIS 包 - 自动每月刷新数据
- unit-testing - PHP单元测试模拟成员变量依赖
- javascript - 使用 React 更新显示的值
- c++ - 如何对 C++ 可变参数模板进行递归?
- java - View.OnClickListener 没有切换到另一个活动