服务器配置选项 (SQL Server)

适用于:SQL ServerAzure SQL 托管实例

可以使用 SQL Server Management Studio 或 sp_configure 系统存储过程通过配置选项来管理和优化 SQL Server 资源和Azure SQL 托管实例。 大多数常用的服务器配置选项可以通过 SQL Server Management Studio 来使用;而所有配置选项都可通过 sp_configure 来访问。 在设置这些选项之前应该认真考虑这些选项对系统的影响。 有关详细信息,请参阅“查看或更改服务器属性 (SQL Server)”。

重要

高级选项只能由有经验的数据库管理员或认证的 SQL Server 技术人员更改。

配置选项的分类

如看不到配置更改的效果,则可能没有安装。 检查配置选项的 run_value 是否已更改。

配置选项在设置选项并发出 RECONFIGURE(在某些情况下为 RECONFIGURE WITH OVERRIDE)语句之后立即生效。 重新配置某些选项会使计划缓存中的计划失效,并编译新计划。 有关详细信息,请参阅 DBCC FREEPROCCACHE (Transact-SQL)

可以使用 sys.configurations 目录视图来确定 config_valuevalue 列)、run_valuevalue_in_use 列)以及配置选项是否需要重启数据库引擎(is_dynamic 列)。

如果需要重启 SQL Server,选项最初只会在 value 列中显示更改后的值。 重启之后,新值将出现在 value 列和 value_in_use 列中。

但有些选项需要在重新启动服务器后,新的配置值才能生效。 如果设置了新值并在重启服务器之前运行 sp_configure,则新值将出现在 sys.configurations 目录视图的 value 列中,而不是出现在 value_in_use 列中。 重启服务器之后,新值将出现在 value_in_use 列中。

备注

sp_configure 结果集中的 config_value 等同于 sys.configurations 目录视图的 value 列,run_value 等同于 value_in_use 列。

自配置选项是指 SQL Server 根据系统需要进行调整的选项。 大多数情况下,这使您无需手动设置值。 例如,“最大工作线程数”选项和“用户连接数”选项。

以下查询可用于确定是否尚未安装任何配置的值:

SELECT *
FROM sys.configurations
WHERE [value] <> [value_in_use];

如果该值是对配置选项所做的更改,但 value_in_use 不相同,则说明 RECONFIGURE 命令未运行或失败,或者必须重启数据库引擎。

有两个配置选项,其中 valuevalue_in_use 可能不相同,以下为预期行为:

  • 最大服务器内存 (MB) – 0 的默认配置的值将在 value_in_use 列中显示为 2147483647

  • 最小服务器内存 (MB) - 0 的默认配置的值可能显示为 value_in_use 列中的 8(在 32 位系统上)或 16(在 64 位系统上)。 在某些情况下,如果 value_in_use 显示为 0,则实际的 value_in_use8(32 位)或 16(64 位)。

is_dynamic 列可用于确定配置选项是否需要重启。 is_dynamic 列中的 1 值表示,运行 RECONFIGURE 命令时,新值会立即生效。 某些情况下,数据库引擎可能不会立即评估新值,但在正常的执行过程中会执行此操作。 is_dynamic 列中的 0 值表示,除非重启数据库引擎,否则即使运行 RECONFIGURE 命令,更改的配置值也不会生效。

对于非动态配置选项,无法判断是否已运行 RECONFIGURE 命令来应用配置更改。 在重启 SQL Server 以应用配置更改之前,请运行以下 RECONFIGURE 命令,以确保下次重启 SQL Server 时,所有配置更改都将生效。

配置选项

下表列出了所有可用的配置选项、可能的设置范围及其默认值以及受支持的产品(SQL Server 或 Azure SQL 托管实例)。 配置选项按以下字母代码标记:

  • A = 高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改,并且需要将 show advanced options 设置为 1

  • RR = 需要重启数据库引擎的选项。

  • RP = 需要重启 PolyBase 引擎的选项。

  • SC = 自配置选项。

注意

SQL Server 2014 (12.x) 是 32 位操作系统支持的最新版本。

配置选项 可能值 SQL Server Azure SQL 托管实例
访问检查缓存桶计数 (A) 最小值0
最大值:16384
默认:0
访问检查缓存配额 (A) 最小值0
最大值:2147483647
默认:0
即席分布式查询 (A) 最小值0
最大值:1
默认:0
ADR 清除程序重试超时(分钟) (A) 最小值0
最大值:32767
默认:120
SQL Server 2019 (15.x) 及更高版本
ADR 预先分配因素 (A) 最小值0
最大值:32767
默认:4
SQL Server 2019 (15.x) 及更高版本
affinity I/O mask (A,RR) 最小值-2147483648
最大值:2147483647
默认:0
是(仅限 64 位)
affinity mask (A) 最小值-2147483648
最大值:2147483647
默认:0
是(仅限 64 位)
affinity64 I/O mask(A、RR) 最小值-2147483648
最大值:2147483647
默认:0
是(仅限 64 位)
affinity64 mask (A) 最小值-2147483648
最大值:2147483647
默认:0
是(仅限 64 位)
代理 XPs (A) 1 最小值0
最大值:1
默认:0
允许 PolyBase 导出 最小值0
最大值:1
默认:0
SQL Server 2016 (13.x) 及更高版本
允许更新

警告:已过时。 请不要使用。 重新配置期间会导致错误。
最小值0
最大值:1
默认:0
自动 soft-NUMA 已禁用(A、RR) 最小值0
最大值:1
默认:0
备份校验和默认值 最小值0
最大值:1
默认:0
备份压缩算法 最小值0
最大值:1
默认:0
SQL Server 2022 (16.x) 及更高版本
backup compression default 最小值0
最大值1 (SQL Server 2022(16.x 以前版本)或 2 (SQL Server 2022 (16.x 及更高版本)
默认:0
阻塞的进程阈值 (A) 最小值5
最大值:86400
默认:0
c2 审核模式 (A,RR) 最小值0
最大值:1
默认:0
clr enabled 最小值0
最大值:1
默认:0
clr 严格安全性 (A) 最小值0
最大值:1
默认:0
SQL Server 2017 (14.x) 及更高版本
列加密 enclave 类型 (RR) 最小值0
最大值:2
默认:0
common criteria compliance enabled (A,RR) 最小值0
最大值:1
默认:0
contained database authentication 最小值0
最大值:1
默认:0
并行的开销阈值 (A) 最小值0
最大值:32767
默认:5
cross db ownership chaining 最小值0
最大值:1
默认:0
cursor threshold (A) 最小值-1
最大值:2147483647
默认:-1
Database Mail XPs (A) 最小值0
最大值:1
默认:0
default full-text language (A) 最小值0
最大值:2147483647
默认:1033
default language 最小值0
最大值:9999
默认:0
default trace enabled (A) 最小值0
最大值:1
默认:1
disallow results from triggers (A) 最小值0
最大值:1
默认:0
EKM provider enabled (A) 最小值0
最大值:1
默认:0
外部脚本已启用 (SC) 最小值0
最大值:1
默认:0
SQL Server 2016 (13.x) 及更高版本
文件流访问级别 最小值0
最大值:2
默认:0
填充因子 (A,RR) 最小值0
最大值:100
默认:0
FT 爬网带宽(最大值) (A) 最小值0
最大值:32767
默认:100
FT 爬网带宽(最小值) (A) 最小值0
最大值:32767
默认:0
FT 通知带宽(最大值) (A) 最小值0
最大值:32767
默认:100
FT 通知带宽(最小值) (A) 最小值0
最大值:32767
默认:0
Hadoop 连接 (RP) 最小值0
最大值:7
默认:0
SQL Server 2016 (13.x) 及更高版本
已启用硬件卸载(A、RR) 最小值0
最大值:1
默认:0
SQL Server 2022 (16.x) 及更高版本
in-doubt xact resolution (A) 最小值0
最大值:2
默认:0
index create memory (KB)(A,SC) 最小值704
最大值:2147483647
默认:0
lightweight pooling (A,RR) 最小值0
最大值:1
默认:0
locks (A,RR,SC) 最小值5000
最大值:2147483647
默认:0
max degree of parallelism (A) 最小值0
最大值:32767
默认:0
max full-text crawl range (A) 最小值0
最大值:256
默认:4
max server memory (MB)(A、SC) 最小值16
最大值:2147483647
默认:2147483647
max text repl size (B) 最小值0
最大值:2147483647
默认:65536
最大工作线程数 (A) 2 最小值128
最大值:32767
默认:0

对于 64 位,建议最大2048(对于 32 位 ,建议最大为 1024)。
media retention (A) 最小值0
最大值:365
默认:0
min memory per query (KB) (A) 最小值512
最大值:2147483647
默认:1024
min server memory (MB)(A、SC) 最小值0
最大值:2147483647
默认:0
嵌套触发器 最小值0
最大值:1
默认:1
network packet size (B) (A) 最小值512
最大值:32767
默认:4096
Ole Automation Procedures (A) 最小值0
最大值:1
默认:0
open objects (A、RR)

警告:已过时。 请不要使用。
最小值0
最大值:2147483647
默认:0
针对即席工作负荷进行优化 (A) 最小值0
最大值:1
默认:0
PH 超时 (A) 最小值1
最大值:3600
默认:60
PolyBase 已启用 最小值0
最大值:1
默认:0
SQL Server 2019 (15.x) 及更高版本
polybase 网络加密 最小值0
最大值:1
默认:1
precompute rank (A) 最小值0
最大值:1
默认:0
priority boost (A,RR) 最小值0
最大值:1
默认:0
query governor cost limit (A) 最小值0
最大值:2147483647
默认:0
查询等待 (A) 最小值-1
最大值:2147483647
默认:-1
恢复间隔(分钟)(A,SC) 最小值0
最大值:32767
默认:0
远程访问 (RR) 最小值0
最大值:1
默认:1
remote admin connections 最小值0
最大值:1
默认:0
远程数据存档 最小值0
最大值:1
默认:0
remote login timeout 最小值0
最大值:2147483647
默认:10
remote proc trans 最小值0
最大值:1
默认:0
remote query timeout 最小值0
最大值:2147483647
默认:600
复制 XPS (A) 最小值0
最大值:1
默认:0
scan for startup procs (A,RR) 最小值0
最大值:1
默认:0
server trigger recursion 最小值0
最大值:1
默认:1
设置工作集大小 (A、RR)

警告:已过时。 请不要使用。
最小值0
最大值:1
默认:0
show advanced options 最小值0
最大值:1
默认:0
SMO 和 DMO XP (A) 最小值0
最大值:1
默认:1
取消显示恢复模型错误 (A) 最小值0
最大值:1
默认:0
tempdb 元数据内存优化(A、RR) 最小值0
最大值:1
默认:0
SQL Server 2019 (15.x) 及更高版本
transform noise words (A) 最小值0
最大值:1
默认:0
两位数年份截止 (A) 最小值1753
最大值:9999
默认:2049
user connections (A,RR,SC) 最小值0
最大值:32767
默认:0
user options 最小值0
最大值:32767
默认:0
xp_cmdshell (A) 最小值0
最大值:1
默认:0

1 SQL Server 代理启动时,更改为 1。 如果 SQL Server 代理设置为在安装过程中自动启动,则默认值为 0

2 Zero (0) 根据逻辑处理器数自动配置最大工作线程数。 有关详细信息,请参阅自动配置最大工作线程数