- 服务器级配置参数:在 SQL Server 实例级别设置,影响整个实例。
- 数据库级配置选项:在单个数据库级别设置,影响特定数据库。
下面我将从这两个维度,结合不同版本(传统 sp_configure 和现代的基于 ALTER SERVER CONFIGURATION 的方式),为您详细梳理 SQL Server 的关键参数设置。

(图片来源网络,侵删)
服务器级配置参数
服务器级参数控制着 SQL Server 实例的内存、I/O、连接、高级功能等核心行为。
查看和修改参数的方法
在 SQL Server 2012 及更高版本中,推荐使用图形化界面和现代的 T-SQL 命令。
使用 SQL Server Management Studio (SSMS)
- 连接到您的 SQL Server 实例。
- 在 对象资源管理器 中,右键点击服务器名称,选择 “属性” (Properties)。
- 在弹出的窗口中,您可以看到多个页面,如 “内存”、“处理器”、“高级”、“连接” 等,每个页面都包含一组相关的配置选项。
使用 T-SQL 命令

(图片来源网络,侵删)
-
查看所有参数:
-- 显示所有运行配置值 EXEC sp_configure; -- 显示所有高级配置选项 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure;
-
修改参数:
-- 步骤1:更新配置值(不立即生效) EXEC sp_configure 'parameter_name', 'value'; -- 步骤2:让配置立即生效(RECONFIGURE WITH OVERRIDE 用于某些需要强制生效的参数) RECONFIGURE;
注意: 对于一些关键参数,可能需要重启 SQL Server 服务才能生效。
关键服务器级参数详解
A. 内存相关
| 参数 | 描述 | 推荐设置/说明 |
|---|---|---|
max server memory |
(最重要) 设置 SQL Server 可以使用的最大内存量(MB)。 | 必须设置! 不要让 SQL Server 无限制地使用所有内存,建议设置为物理内存的 70%-80%,为操作系统和其他应用程序留出足够空间,如果服务器上只运行 SQL Server,可以设置到 90% 左右。 |
min server memory |
设置 SQL Server 可以使用的最小内存量(MB)。 | 通常设为 0,让 SQL Server 根据负载动态增长,但如果知道应用有稳定的最小内存需求,可以设置一个合理的值。 |
awe enabled |
在 32 位系统上,启用地址窗口扩展以使用超过 4GB 的物理内存。 | 仅适用于 32 位 SQL Server,64 位系统上此参数无效,SQL Server 可以自动使用所有可用内存。 |
B. CPU 和并行处理相关
| 参数 | 描述 | 推荐设置/说明 |
|---|---|---|
max degree of parallelism |
控制单个查询可以使用的最大处理器数(并行度)。 | 重要调优参数。 - 0 (默认): SQL Server 自动决定并行度。 - 1: 禁用所有并行查询。 - >1: 限制并行查询的最大线程数,对于 OLTP 系统,常设置为 1 或 8,以减少资源争用,对于报表和分析系统,可以设置为 0 或更高。 |
cost threshold for parallelism |
查询优化器估计的成本必须超过此值,才考虑使用并行计划。 | 默认值是 5,对于高并发 OLTP 系统,可以适当调高(如 20-50),以避免小查询也启动并行,导致 CPU 争用。 |
C. 网络和连接相关
| 参数 | 描述 | 推荐设置/说明 |
|---|---|---|
remote access |
控制是否允许远程连接到此 SQL Server 实例。 | 重要安全参数。 - 0: 禁止所有远程连接。 - 1 (默认): 允许远程连接,如果应用和数据库在同一台服务器,可以设为 0 以增强安全性。 |
remote login timeout |
远程连接尝试在超时前等待的秒数。 | 默认 10 秒,可以根据网络状况调整。 |
remote proc trans |
控制分布式事务中是否对远程过程调用使用 MS DTC(分布式事务协调器)。 | 默认 0,通常保持默认值。 |
D. 高级和安全相关
| 参数 | 描述 | 推荐设置/说明 |
|---|---|---|
xp_cmdshell |
允许执行操作系统命令。 | 重要安全风险! 默认在 SQL Server 2005 及以后版本中是 禁用 的,除非有绝对必要且已做好充分安全控制,否则不要启用,启用方法:EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; |
contained database authentication |
启用包含数据库认证。 | 包含数据库是 SQL Server 的一种高级功能,允许数据库包含所有用户元数据,使其更容易迁移,默认为 0。 |
backup compression default |
设置所有备份的默认压缩行为。 | 强烈推荐设置为 1 (开启),备份压缩可以显著减少备份文件大小和 I/O,对性能影响很小,但会增加一定的 CPU 负载。 |
数据库级配置选项
这些选项针对单个数据库,可以通过 ALTER DATABASE 命令进行设置。

(图片来源网络,侵删)
查看和修改数据库级选项
查看当前设置:
-- 查看所有数据库的选项
SELECT name, is_auto_create_stats_on, is_auto_update_stats_on,
is_recursive_triggers_on, is_trustworthy_on
FROM sys.databases;
-- 查看特定数据库的选项
ALTER DATABASE YourDatabaseName SET;
修改设置:
ALTER DATABASE YourDatabaseName SET [option_name] = ON/OFF;
关键数据库级选项
| 选项 | 描述 | 推荐设置/说明 |
|---|---|---|
AUTO_CREATE_STATISTICS |
当查询需要但不存在统计信息时,自动创建。 | 强烈推荐保持 ON (默认),这是查询优化器做出正确决策的基础,对性能至关重要。 |
AUTO_UPDATE_STATISTICS |
当数据发生变化导致统计信息过期时,自动更新。 | 强烈推荐保持 ON (默认),过期的统计信息是查询性能差的常见原因。 |
AUTO_UPDATE_STATISTICS_ASYNC |
异步自动更新统计信息。 | 默认 OFF,设置为 ON 可以减少查询等待统计信息更新的时间,但可能导致查询使用略微过时的统计信息,适合高并发 OLTP 系统。 |
RECOVERY |
(非常重要) 设置数据库的恢复模式,决定事务日志如何管理。 | 三种模式: - SIMPLE: 简单恢复,不记录事务日志,无法进行点恢复,风险高,但日志空间占用小,适合开发、测试或只读数据。 - FULL: 完整恢复,完整记录所有事务,可以进行到任意时间点的恢复,适合生产环境,但需要定期备份日志。 - BULK_LOGGED: 大容量日志恢复,对大容量操作(如批量导入)进行最小日志记录,节省日志空间,但仍能恢复到日志备份点,适合数据加载场景。 |
TRUSTWORTHY |
指示 SQL Server 是否信任数据库内的代码(如模块)以及该数据库中的用户。 | 安全风险! 默认 OFF,设置为 ON 可能导致安全漏洞,允许低权限用户提升权限,除非在特定场景下(如跨数据库所有权链),否则保持 OFF。 |
DATE_CORRELATION_OPTIMIZATION |
当两个表在查询中通过外键关联,并且数据同时插入时,启用此选项可以优化连接。 | 默认 OFF,对于特定的 ETL 或数据仓库场景,如果确认表数据有强相关性,可以尝试开启。 |
其他重要配置
除了上述参数,还有一些重要的配置项不属于传统意义上的“参数”,但对性能和功能同样关键。
SQL Server Agent 作业配置
SQL Server Agent 负责执行计划任务,如备份、作业等,其配置(如作业历史记录的保留时间、最大作业历史记录大小)在 SSMS 的 SQL Server Agent 属性 中设置。
TempDB 配置
TempDB 是一个全局数据库,供所有用户会话使用,其性能直接影响整个实例。
- 数据文件和日志文件:TempDB 的性能至关重要,建议将数据文件和日志文件放在独立的、高速的物理磁盘上(最好是 SSD)。
- 文件数:根据 CPU 核心数,为 TempDB 创建多个数据文件(核心数 * 2 到 4 个),并将它们放在不同的物理磁盘上,以减少 I/O 竞争。
- 初始大小和自动增长:为 TempDB 设置一个合理的初始大小,避免其频繁自动增长,将自动增长设置为按固定大小(如 128MB 或 256MB)增长,而不是按百分比。
跟踪标志
跟踪标志是用于诊断和临时改变 SQL Server 行为的“开关”,它们应该在 Microsoft 支持人员的指导下使用,不应在生产环境中随意启用。
- 查看当前启用的跟踪标志:
DBCC TRACESTATUS(-1);
- 临时启用跟踪标志(重启后失效):
DBCC TRACEON(1234, -1);
- 永久启用跟踪标志(需要重启服务):
DBCC TRACEON(1234, -1); RECONFIGURE;
总结与最佳实践
- 不要随意修改:许多参数的默认值已经过优化,修改前务必理解其作用和潜在影响。
- 从小处着手:一次只修改一个参数,并观察其对系统的影响,不要一次性修改多个参数。
- 性能监控是前提:修改参数后,必须使用性能监视工具(如 SQL Server Profiler、Extended Events、DMVs、Windows Performance Monitor)来监控效果。
- 区分 OLTP 和 DW:在线事务处理和分析系统的参数调优策略完全不同,OLTP 侧重于并发和低延迟,DW 侧重于高吞吐量和并行处理。
- 安全第一:对于像
xp_cmdshell这样的高风险参数,默认禁用是正确的选择。 - 文档化你的更改:记录下所有修改过的参数及其原因,方便日后排查问题。
希望这份详细的指南能帮助您更好地理解和配置 SQL Server!
