SQL Server 2022 (16.x) 中的新增功能

适用于: SQL Server 2022 (16.x)

SQL Server 2022 (16.x) 在早期版本的基础上构建,旨在将 SQL Server 发展成一个平台,以提供开发语言、数据类型、本地或云环境以及操作系统选项。

以下视频介绍了 SQL Server 2022 (16.x)。

有关其他视频内容,请参阅:

本文总结了 SQL Server 2022 (16.x) 的新功能和增强功能。

获取 SQL Server 2022 (16.x)

获取 SQL Server 2022 Evaluation Edition。 生成号:16.0.1000.6。

有关详细信息和已知问题,请参阅 SQL Server 2022 (16.x) 发行说明

对于使用 SQL Server 2022 (16.x) 的最佳体验,请使用最新工具

功能特点

以下各部分介绍了我们在 SQL Server 2022 (16.x) 中引入的改进功能。

分析

新增功能或更新 详细信息
Azure Synapse Link for SQL 在 SQL Server 2022 (16.x) 中获取有关操作数据的准实时分析。 通过 SQL Server 2022 (16.x) 和 Azure Synapse Analytics 专用 SQL 池中的操作存储之间的无缝集成,Azure Synapse Link for SQL 使你能够使用新的更改源技术对操作数据运行分析、商业智能和机器学习方案,并对源数据库产生最小影响。

有关详细信息,请参阅什么是 Azure Synapse Link for SQL?- Azure Synapse Analytics

另请参阅已知问题
对象存储集成 SQL Server 2022 (16.x) 为数据平台引入了新的对象存储集成,使你能够将 SQL Server 与 S3 兼容对象存储以及 Azure 存储集成。 第一个是备份到 URL,第二个是 Data Lake Virtualization。

Data Lake Virtualization 将 PolyBase 与 S3 兼容对象存储集成,增加了对使用 T-SQL 查询 parquet 文件的支持。
数据虚拟化 从 SQL Server 查询不同类型的数据源上的不同类型数据。

SQL Server 2022 (16.x) 累积更新 2 现在引入了对 Oracle TNS 文件的支持。 有关详细信息和示例,请参阅外部数据源

可用性

新增功能或更新 详细信息
链接到 Azure SQL 托管实例 在 SQL Server 实例与 Azure SQL 托管实例之间复制数据以进行灾难恢复和迁移。 请参阅 Azure SQL 托管实例的链接功能
包含的可用性组 创建 Always On 可用性组:
- 除实例级别外,还在可用性组级别管理其自己的元数据对象(用户、登录名、权限、SQL 代理作业等)。
- 在可用性组中包括专用的包含系统数据库。 有关详细信息,请参阅什么是包含的可用性组?
分布式可用性组 - 现在使用多个 TCP 连接,以便跨具有长 tcp 延迟的远程链接更好地利用网络带宽。
改进了备份元数据 backupset 系统表返回上次有效的还原时间。 请参阅 backupset (Transact-SQL)

安全性

新增功能或更新 详细信息
Microsoft Defender for Cloud 集成 使用 Defender for SQL 计划保护 SQL Server。 Defender for SQL 计划要求启用适用于 Azure 的 SQL Server 扩展,并包含用于发现和减少潜在的数据库漏洞以及检测可能表明数据库受到威胁的异常活动的功能。 详细了解 Defender for SQL 如何在任何位置(本地、混合和多云环境)保护你的整个数据库资产。
Microsoft Purview 集成 将 Microsoft Purview 访问策略应用于在 Azure Arc 和 Microsoft Purview 数据使用管理中注册的任何 SQL Server 实例。

- 新引入的 SQL 性能监视器和 SQL 安全审核员角色符合使用 Microsoft Purview 访问策略的最低特权原则。

有关详细信息,请查看数据所有者对已启用 Azure Arc 的 SQL Server 的访问权限
账本 账本功能在数据库中提供防篡改功能。 你能够以加密方式向其他方(如审核员或其他业务参与方)证明你的数据未篡改。 请参阅账本
Microsoft Entra 身份验证 使用 Microsoft Entra ID(旧称 Azure Active Directory身份验证连接到 SQL Server。

从 SQL Server 2022 (16.x) 累积更新 6 开始,可以使用 Microsoft Entra 身份验证在累积更新 12 中以正式发布 (GA) 版提供配置事务和快照复制
具有安全 enclave 的 Always Encrypted 支持 JOIN、GROUP BY 和 ORDER BY,以及通过 enclave 在机密查询中使用 UTF-8 排序规则的文本列。 提高了性能。 请参阅具有安全 Enclave 的 Always Encrypted
访问控制:权限 新的精细权限改进了对最小特权原则的遵守

请阅读此处,深入了解 SQL 权限系统最小特权原则和外部策略改进
访问控制:服务器级角色 新的内置服务器级角色为应用于整个 SQL Server 实例的管理任务启用最小特权访问
动态数据掩码 动态数据掩码的精细 UNMASK 权限。
支持 PFX 证书及其他加密改进 新增了对 PFX 文件格式证书和私钥的导入和导出支持。 能够将主密钥备份还原到 Azure Blob 存储。 SQL Server 生成的证书现在具有 3072 位的默认 RSA 密钥大小。

增加了 BACKUP SYMMETRIC KEYRESTORE SYMMETRIC KEY

另请参阅 BACKUP CERTIFICATE (Transact-SQL)
支持 MS-TDS 8.0 协议 新的 MS-TDS 协议迭代。 请参阅 TDS 8.0 支持TLS 1.3 支持
- 强制加密
- 使 MS-TDS 与 HTTPS 保持一致,使网络设备能够对其进行管理,以便提高安全性
- 删除 MS-TDS/TLS 自定义交错,并启用 TLS 1.3 和后续 TLS 协议版本。

性能

新增功能或更新 详细信息
系统页闩锁并发增强功能 对全局分配映射 (GAM) 页和共享全局分配映射 (SGAM) 页的并发更新可减少分配/解除分配数据页和区时的页闩锁争用。 这些增强功能适用于所有用户数据库,尤其有益于 tempdb 密集型工作负载。
缓冲池并行扫描 利用多个 CPU 内核,提高大内存计算机上缓冲池扫描操作的性能。 详细了解触发缓冲池扫描的操作可能在大内存计算机上运行缓慢
有序聚集列存储索引 有序聚集列存储索引 (CCI) 在索引生成器将数据压缩为索引段之前,对内存中的现有数据进行排序。 这有可能更有效地消除段,从而提高性能,因为要从磁盘读取的段数会减少。 有关详细信息,请参阅 CREATE COLUMNSTORE INDEX (Transact-SQL)列存储索引中的新增功能

还可以在 Synapse Analytics 中使用。 请参阅查询性能
改进了列存储段消除 所有列存储索引都受益于按数据类型增强的段消除。 数据类型选择可能会对列存储索引上查询的基于通用筛选谓词的查询性能产生重大影响。 此段消除适用于数值、日期和时间数据类型,以及小数位数小于或等于 2 的 datetimeoffset 数据类型。 从 SQL Server 2022 (16.x) 开始,段消除功能扩展到字符串、二进制文件、guid 数据类型以及用于小数位数大于 2 的 datetimeoffset 数据类型。
内存中 OLTP 管理 改进大型内存服务器中的内存管理,以减少内存不足的情况。
虚拟日志文件增长 在以前的 SQL Server 版本中,如果下一次增长超过当前日志大小的 1/8,并且增长小于 64MB,则创建四个 VLF。 在 SQL Server 2022 (16.x) 中,此行为略有不同。 如果增长小于或等于 64MB,并且超过当前日志大小的 1/8,则只创建一个 VLF。 有关 VLF 增长的详细信息,请参阅虚拟日志文件 (VLF)
线程管理 - ParallelRedoThreadPool:与所有具有重做工作的数据库共享的实例级线程池。 使用此项,每个数据库都可以受益于并行重做。 并行重做线程池允许多个线程同时处理一个数据库的日志记录 (并行)。 在以前的版本中,用于重做的可用线程数限制为 100。

- ParallelRedoBatchRedo:日志记录的重做是在一个闩锁下批量处理的,这样提高了速度。 这可以改进恢复、追赶重做和故障恢复重做。
减少缓冲池 I/O 膨胀 在从存储填充缓冲池时,减少单个页面膨胀为八个页面的情况(这会产生不必要的 I/O)。 通过预读机制,能以更有效率的方式填充缓冲池。 此更改是在 2022 SQL Server(所有版本)中引入的,并包含在 Azure SQL 数据库和 Azure SQL 托管实例中。
已增强旋转锁算法 旋转锁对多线程引擎中的一致性具有重要作用。 数据库引擎的内部调整可提高旋转锁的效率。 此更改是在 2022 SQL Server(所有版本)中引入的,并包含在 Azure SQL 数据库和 Azure SQL 托管实例中。
已改进虚拟日志文件 (VLF) 算法 虚拟文件日志 (VLF) 是物理事务日志的抽象形式。 若因日志增长而产生大量小型 VLF,可能会影响操作性能(例如恢复操作)。 我们已更改在部分日志增长场景中创建的 VLF 文件数的算法。 若要详细了解 SQL Server 2022 (16.x) 中的算法更改情况,请参阅虚拟日志文件 (VLF)。 此更改是在 2022 SQL Server(所有版本)中引入的,并包含在 Azure SQL 数据库中。
适用于事务日志文件增长事件的即时文件初始化 事务日志文件通常无法受益于即时文件初始化 (IFI)。 在 SQL Server 2022 (16.x)(所有版本)及之后的版本以及 Azure SQL Database 中,即时文件初始化可对不超过 64 MB 的事务日志增长事件提供帮助。 新数据库的默认自动增长大小增量为 64 MB。 大于 64 MB 的事务日志文件自动增长事件则无法利用即时文件初始化。 有关详细信息,请参阅数据库即时文件初始化

查询存储和智能查询处理

智能查询处理 (IQP) 功能系列包含的功能可以提升现有工作负载的性能,同时最大限度地减少实现工作量。

Diagram of the Intelligent Query Processing family of features and when they were first introduced to SQL Server.

新增功能或更新 详细信息
次要副本的查询存储 次要副本上的查询存储在可用于主要副本的次要副本工作负荷上启用相同的查询存储功能。 在次要副本的查询存储中了解详细信息。

有关详细信息,请参阅下文中的查询存储改进
查询存储提示 查询存储提示使用查询存储提供在不更改应用程序代码的情况下制定查询计划的方法。 查询存储提示以前仅在 Azure SQL 数据库和 Azure SQL 托管实例上可用,现在可在 SQL Server 2022 (16.x) 中使用。 需要启用查询存储并处于“读写”模式。
内存授予反馈 内存授予反馈可根据过去的性能调整为查询分配的内存大小。 SQL Server 2022 (16.x) 引入了百分位数和持久性模式内存授予反馈。 需要启用查询存储。

- 持久性:通过此功能,可将给定缓存计划的内存授予反馈保留在查询存储中,以便可在缓存逐出后重复使用反馈。 持久性有利于内存授予反馈以及新的 DOP 和 CE 反馈功能。
- 百分位数:新算法提高了内存需求波动较大的查询的性能,它使用前几次查询执行的内存授予信息,而不仅仅是前一个查询执行的内存授予信息。 需要启用查询存储。 自 SQL Server 2022 CTP 2.1 起,新创建的数据库默认启用查询存储。
参数敏感计划优化 自动为单个参数化语句启用多个活动缓存计划。 缓存执行计划根据客户提供的运行时参数值适应大不相同的数据大小。 有关详细信息,请参阅参数敏感计划优化
并行度 (DOP) 反馈 新的数据库范围配置选项 DOP_FEEDBACK 会自动调整重复查询的并行度,以针对并行度低可能导致性能问题的工作负载进行优化。 类似于 Azure SQL 数据库中的优化。 需要启用查询存储并处于“读写”模式。

从 RC 0 开始,每个查询重新编译 SQL Server 使用现有反馈将查询的运行时统计信息与现有反馈进行比较。 如果性能不同或更佳,我们将清除所有 DOP 反馈,并从编译的 DOP 开始触发对查询的重新分析。

请参阅并行度 (DOP) 反馈
基数估计反馈 如果这些问题是由不正确的估计模型假设引起的,则识别并更正重复查询的次优查询执行计划。 需要启用查询存储并处于“读写”模式。 请参阅基数估计 (CE) 反馈
优化了计划强制 使用编译重播通过预缓存不可重复的计划编译步骤来改进强制计划生成的编译时间。 在使用查询存储优化计划强制中了解详细信息。

管理

新增功能或更新 详细信息
适用于 SQL Server 的 Azure 扩展的集成设置体验 在设置时为 SQL Server 安装 Azure 扩展。 Azure 集成功能所必需的。 有关详细信息,请参阅:
- 从命令提示符安装 SQL Server
- 使用安装向导安装 SQL Server(安装程序)
管理适用于 SQL Server 的 Azure 扩展 使用 SQL Server 配置管理器管理适用于 SQL Server 服务的 Azure 扩展。 创建已启用 Azure Arc 的 SQL Server 实例以及使用其他 Azure 连接功能时需要此功能。 请参阅 SQL Server 配置管理器
最大服务器内存计算 在安装过程中,SQL 安装程序建议为最大服务器内存提供一个值,以便与记录的建议保持一致。 基础计算在 SQL Server 2022 (16.x) 中有所不同,以反映建议的服务器内存配置选项
加速数据库恢复 (ADR) 改进 在解决持久版本存储 (PVS) 的存储问题和提高整体可伸缩性方面进行了几项改进。 SQL Server 2022 (16.x) 实现了每个数据库而不是每个实例的持久版本存储清理器线程,并且 PVS 页面跟踪器的内存占用情况得到了改进。 还有一些 ADR 效率方面的改进,例如并发改进,它们可帮助清理过程更高效地工作。 ADR 会清理以前由于锁定而无法清理的页面。

请参阅 SQL Server 2022 (16.x) 中的 ADR 改进
改进了快照备份支持 添加了对冻结和解冻 I/O 的 Transact-SQL 支持,而无需 VDI 客户端。 创建 Transact-SQL 快照备份
收缩数据库 WAIT_AT_LOW_PRIORITY 在以前的版本中,收缩数据库和数据库文件以回收空间通常会导致并发问题。 SQL Server 2022 (16.x) 添加了 WAIT_AT_LOW_PRIORITY 作为收缩操作(DBCC SHRINKDATABASE 和 DBCC SHRINKFILE)的附加选项。 指定 WAIT_AT_LOW_PRIORITY 时,需要 Sch-S 或 Sch-M 锁的新查询不会被等待收缩操作阻止,直到收缩操作停止等待并开始执行。 请参阅收缩数据库收缩文件
XML 压缩 XML 压缩提供了一种方法,用于压缩 XML 列和索引的行外 XML 数据,从而提高容量要求。 有关详细信息,请参阅 CREATE TABLE (Transact-SQL)CREATE INDEX (Transact-SQL)
异步自动更新统计信息并发 如果启用 ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY 数据库范围内配置,使用异步统计信息更新来避免潜在的并发问题。
备份并还原到 S3 兼容对象存储 SQL Server 2022 (16.x) 通过使用 REST API 添加对新 S3 连接器的支持来扩展 BACKUP/RESTORETO/FROMURL 语法。 请参阅备份到 URL

平台

新增功能或更新 详细信息
已删除 SQL Server Native Client (SNAC) 已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件(版本 2012 到 2019)随附的 SQLNCLI,请参阅此支持生命周期特例
具有直接写入功能的混合缓冲池 减少需要在驻留于 PMEM 设备上的已修改数据或索引页上执行的 memcpy 命令的数量。 此 enlightenment 现可用于 Window 2022 以及 Linux。 有关详细信息,请参阅具有直接写入功能的混合缓冲池为 Windows 上的 SQL Server 配置持久性内存 (PMEM)
集成加速和卸载 SQL Server 2022 (16.x) 利用 Intel 等合作伙伴提供的加速技术来提供扩展功能。 发布时,Intel® QuickAssist Technology (QAT) 提供备份压缩和硬件卸载。 有关详细信息,请参阅集成加速和卸载
改进了优化 SQL Server 2022 (16.x) 利用新的硬件功能(包括高级矢量扩展 (AVX) 512 扩展)来改进批处理模式操作。 需要跟踪标志 15097。 请参阅 DBCC TRACEON - 跟踪标志 (Transact-SQL)

语言

新增功能或更新 详细信息
可恢复添加表约束操作 支持暂停和恢复 ALTER TABLE ADD CONSTRAINT 操作。 在维护时段、故障转移或系统故障后恢复此类操作。
CREATE INDEX 添加了联机索引操作子句的 WAIT_AT_LOW_PRIORITY
事务复制 对等复制支持冲突检测和解析,以允许最后一个写入者获胜。 最初是在 SQL Server 2019 (15.x) CU 13 中引入的。 有关详细信息,请参阅自动处理与上次写入获胜的冲突
CREATE STATISTICS 添加 选项

低优先级的自动统计信息。
SELECT ... WINDOW 子句 在应用 OVER 子句中使用窗口的窗口函数之前,确定行集的分区和排序。 请参阅 SELECT - WINDOW
IS [NOT] DISTINCT FROM 确定两个表达式在相互比较时计算结果是否为 NULL,并保证结果值为 true 或 false。 有关详细信息,请参阅 IS [NOT] DISTINCT FROM (Transact-SQL)
时序函数 可以使用时间窗口、聚合和筛选功能来存储和分析随时间变化的数据。
- DATE_BUCKET ()
- GENERATE_SERIES ()

下面添加了对 IGNORE NULLS 和 RESPECT NULLS 的支持:
- FIRST_VALUE ()
- LAST_VALUE ()
JSON 函数 - ISJSON ()
- JSON_PATH_EXISTS ()
- JSON_OBJECT ()
- JSON_ARRAY ()
聚合函数 - APPROX_PERCENTILE_CONT ()
- APPROX_PERCENTILE_DISC ()
T-SQL 函数 - GREATEST ()
- LEAST ()
- STRING_SPLIT ()
- DATETRUNC ()
- LTRIM ()
- RTRIM ()
- TRIM ()
位操作函数 - LEFT_SHIFT ()
- RIGHT_SHIFT ()
- BIT_COUNT ()
- GET_BIT ()
- SET_BIT ()

工具

新增功能或更新 详细信息
Azure Data Studio 下载并安装 Azure Data Studio 获取最新版本。 最新版本包括对 SQL Server 2022 (16.x) 的支持。
分布式重播 SQL Server 安装程序不再包括 Distributed Replay 客户端和控制器可执行文件。 这些内容将随管理员可执行文件一起提供,为单独下载
SQL Server Management Studio SSMS 版本 19.0 现已推出,是建议用于 SQL Server 2022 (16.x) 的 SSMS 版本。 下载 SQL Server Management Studio (SSMS)
SqlPackage.exe SqlPackage 版本 19 提供对 SQL Server 2022 (16.x) 的支持。 在下载并安装 sqlpackage 获取最新版本。
VS Code VS Code 版本 1.67 及更高版本支持 SQL Server 2022 (16.x)。 在 https://code.visualstudio.com/ 获取最新版本。

SQL 机器学习服务

从 SQL Server 2022 (16.x) 起,R、Python 和 Java 的运行时不再随 SQL 安装程序一起安装。 请改为安装任何所需的自定义运行时和包。 有关详细信息,请参阅在 Windows 上安装 SQL Server 机器学习服务(Python 和 R)在 Linux 上安装 SQL Server 机器学习服务(Python 和 R)

其他信息

本部分提供有关上面突出显示的功能的其他信息。

查询存储改进

查询存储可帮助你更好地跟踪性能历史记录、排查查询计划相关问题,并在 Azure SQL 数据库、Azure SQL 托管实例和 SQL Server 2022 (16.x) 中启用新功能。 CTP 2.1 引入默认为新数据库启用的查询存储。 如果需要启用查询存储,请参阅启用查询存储

  • 对于已从其他 SQL Server 实例还原的数据库以及通过就地升级升级到 SQL Server 2022 (16.x) 的数据库,这些数据库将保留以前的查询存储设置。

  • 对于从以前的 SQL Server 实例还原的数据库,单独评估数据库兼容性级别设置,因为一些智能查询处理功能由兼容性级别设置启用。

如果担心查询存储可能会产生的开销,管理员可能会使用自定义捕获策略进一步优化查询存储捕获的内容。 自定义捕获策略可用于帮助进一步优化查询存储捕获。 自定义捕获策略可用于提高对捕获查询和查询详细信息的选择性。 例如,管理员可能会选择仅捕获成本最高的查询、重复查询或计算开销较高的查询。 自定义捕获策略可帮助查询存储捕获工作负荷中最重要的查询。 除 STALE_CAPTURE_POLICY_THRESHOLD 选项外,这些选项定义 OR 条件,需要满足这些条件,才能在定义的“过时捕获策略阈值”中捕获查询。 例如,下面是 QUERY_CAPTURE_MODE = AUTO 中的默认值:

...
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
...

SQL Server 服务设置为“自动(延迟启动)”启动模式

从 SQL Server 2022 (16.x) 开始,在 Configuration Manager 中将 SQL Server 服务的“启动模式”设置为“自动”时,服务将改为在“自动(延迟启动)”模式下启动,即使“启动模式”显示为“自动”也是如此。

SQL Server Analysis Services

此版本引入了新功能和针对性能、资源管理和客户端支持的改进。 有关特定更新,请参阅 SQL Server Analysis Services 中的新增功能

SQL Server Reporting Services

此版本引入了针对辅助功能、安全性、可靠性和 bug 修复的新功能和改进。 有关特定更新,请参阅 SQL Server Reporting Services (SSRS) 中的新增功能

SQL Server Integration Services

有关与 SQL Server Integration Services 相关的更改,请参阅 Integration Services 向后兼容性

其他服务

此版本不为 SQL Server Master Data Services 添加功能。

获取帮助

参与编辑 SQL 文档

你是否知道你可以自行编辑 SQL 内容? 你如果这样做,不仅可以帮助改进我们的文档,还可以获得页面贡献者的殊荣。

有关详细信息,请参阅如何参与 SQL Server 文档编辑