# SQL Server 2022 的“高级”服务器属性页面

你提供的截图是 **SQL Server 2022 的“高级”服务器属性页面**，其中包含多个关键配置项。结合你之前提到的硬件环境（**24核 CPU + 100GB 内存**）和业务场景（**金蝶云星空 V9.1 演示版/生产环境**），以下是针对该页面的**逐项优化建议**：

---

## ✅ 一、核心优化项（必须调整）

### 1. 🚫 FILESTREAM 访问级别 → 已禁用

- **当前状态**：已禁用
- **建议**：✅ **保持禁用**
    - 除非你的金蝶系统明确使用了 FILESTREAM 存储大文件（如附件、图片等），否则无需启用。
    - 启用会增加复杂性和潜在性能开销。

> 💡 金蝶云星空默认不使用 FILESTREAM，所以“已禁用”是正确的。

---

### 2. ⚙️ 并行相关设置（重点优化！）

#### ▶ 并行的开销阈值 = `5`

- **问题**：太小！会导致大量简单查询也启用并行计划，浪费 CPU 资源。
- **建议改为**：`50`> 只有执行成本 &gt; 50 的查询才考虑并行，避免小查询“杀鸡用牛刀”。

#### ▶ 查询等待值 = `-1`

- **含义**：无限等待并行线程资源。
- **建议改为**：`30` 或 `60`（秒） > 防止某个查询因等待并行资源而阻塞太久，影响其他用户。

#### ▶ 锁 = `0`

- **含义**：不限制并行查询持有的锁数量。
- **建议保持 `0`**（无限制），除非遇到严重锁争用问题。

#### ▶ 最大并行度 = `4`

- **问题**：对于 24 核服务器来说太低了！
- **建议改为**：`8`> 允许单个查询最多使用 8 个 CPU 核心，平衡性能与并发能力。 （如果后续发现某些报表特别慢，可临时调到 12~16，但一般不超过 8）

> 🔁 修改后需点击“确定”生效，或通过 T-SQL：

```sql
EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

```

---

### 3. 🌐 网络数据包大小 = `4096`

- **当前值**：4096 字节（默认）
- **建议**：✅ **保持 4096**
    - 对于局域网内金蝶应用服务器连接 SQL Server，这个值足够。
    - 如果是跨广域网或高延迟网络，可尝试设为 `8192`，但通常没必要。

---

### 4. 🕒 远程登录超时值 = `10`

- **含义**：远程连接尝试超时时间（秒）
- **建议**：✅ **保持 10**
    - 合理值，过长会影响故障排查效率。

---

### 5. 📅 两位数年份截止 = `2049`

- **含义**：两位年份（如 “25”）被解释为 2025 还是 1925？
- **建议**：✅ **保持 2049**
    - 符合现代标准，2000–2049 年间的日期都能正确解析。

---

### 6. 🌍 默认全文语言 = `Simplified Chinese`

- **建议**：✅ **保持不动**
    - 金蝶系统主要处理中文数据，此设置合理。

---

### 7. 🔄 启动时扫描存储过程 = `False`

- **含义**：启动时不预编译所有存储过程。
- **建议**：✅ **保持 False**
    - 加快启动速度，按需编译更灵活。

---

### 8. 🆙 全文升级选项 = `重新生成`

- **含义**：升级全文索引时的行为。
- **建议**：✅ **保持“重新生成”**
    - 确保全文索引结构最新，避免兼容性问题。

---

### 9. 🧵 使用 Windows 纤程（轻型池）= `False`

- **含义**：是否启用轻量级线程调度。
- **建议**：✅ **保持 False**
    - 在高并发 OLTP 场景中可能有益，但金蝶 ERP 属于混合负载，且 SQL Server 2022 默认不开启，稳定性优先。

---

### 10. 🏆 提升 SQL Server 优先级 = `False`

- **含义**：是否让 SQL Server 进程获得更高 CPU 优先级。
- **建议**：✅ **保持 False**
    - 除非你是独占数据库服务器，否则不要抢占操作系统或其他服务资源。

---

### 11. 🎯 游标阈值 = `-1`

- **含义**：游标操作的成本阈值。
- **建议**：✅ **保持 -1（无限制）**
    - 一般不需要干预。

---

### 12. ⚡ 允许触发器激发其他触发器 = `True`

- **建议**：✅ **保持 True**
    - 金蝶系统内部逻辑可能依赖嵌套触发器，关闭可能导致功能异常。

---

### 13. 📉 针对即席工作负荷进行优化 = `False`

- **含义**：是否为临时/ad-hoc 查询优化内存分配。
- **建议**：✅ **保持 False**
    - 金蝶系统是标准化 ERP，查询模式相对固定，无需为此优化。

---

### 14. 🚧 阻塞的进程阈值 = `0`

- **含义**：当阻塞超过多少秒时记录到日志？0 表示不记录。
- **建议改为**：`5` 或 `10`> 便于监控和排查死锁/阻塞问题。
    
    ```sql
    EXEC sp_configure 'blocked process threshold (s)', 5;
    RECONFIGURE;
    
    ```

---

### 15. 📄 最大文本复制大小 = `65536`

- **含义**：复制操作中单次传输的最大文本大小（KB）。
- **建议**：✅ **保持 65536（64MB）**
    - 对大多数场景足够，除非你有超大字段复制需求。

---

## ✅ 二、补充建议（不在本页面，但密切相关）

虽然这些不在“高级”页，但对整体性能至关重要：

### 1. 【内存】回到“内存”页设置最大内存 = 81920 MB（80GB）

> 如前所述，这是最关键的一步！

### 2. 【TempDB】多文件配置

```sql
-- 添加 4 个 TempDB 数据文件（假设路径 D:\TempDB\）
ALTER DATABASE tempdb ADD FILE (NAME = tempdev2, FILENAME = 'D:\TempDB\tempdb2.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev3, FILENAME = 'D:\TempDB\tempdb3.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev4, FILENAME = 'D:\TempDB\tempdb4.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);

```

### 3. 【数据库级别】开启 READ\_COMMITTED\_SNAPSHOT

```sql
ALTER DATABASE [Kingdee.K3Cloud] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

```

---

## 📊 总结：你需要修改的关键项

<table id="bkmrk-%E9%85%8D%E7%BD%AE%E9%A1%B9-%E5%BD%93%E5%89%8D%E5%80%BC-%E5%BB%BA%E8%AE%AE%E5%80%BC-%E6%98%AF%E5%90%A6%E7%B4%A7%E6%80%A5-%E6%9C%80%E5%A4%A7%E5%B9%B6"><thead><tr><th>配置项</th><th>当前值</th><th>建议值</th><th>是否紧急</th></tr></thead><tbody><tr><td>最大并行度</td><td>4</td><td>**8**</td><td>🔴 高</td></tr><tr><td>并行的开销阈值</td><td>5</td><td>**50**</td><td>🔴 高</td></tr><tr><td>查询等待值</td><td>-1</td><td>**30**</td><td>🟡 中</td></tr><tr><td>阻塞的进程阈值</td><td>0</td><td>**5**</td><td>🟡 中</td></tr><tr><td>最大服务器内存（另页）</td><td>2TB</td><td>**81920 MB**</td><td>🔴 必须改</td></tr></tbody></table>

---

## 🛠️ 一键优化脚本（复制粘贴执行）

```sql
-- 设置并行度相关
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
EXEC sp_configure 'parallel wait time (ms)', 30000; -- 30秒
EXEC sp_configure 'blocked process threshold (s)', 5;
RECONFIGURE;

-- 设置内存（在“内存”页图形界面操作更安全，也可用下面命令）
EXEC sp_configure 'max server memory (MB)', 81920;
RECONFIGURE;

```

---

## ✅ 最终提醒

- 所有更改建议在**非业务高峰期**进行。
- 修改后观察任务管理器、性能监视器（PerfMon）、SQL Server DMVs（如 `sys.dm_exec_requests`）确认效果。
- 对于金蝶云星空，**稳定性第一，性能第二** —— 不要过度追求极限参数。

---

你当前的 SQL Server 2022 服务器配置非常强大：**24核 CPU + 100GB 内存**，但截图中显示：

> **最大服务器内存 (MB) = 2147483647 MB（即约 2TB）**

这显然是**默认值或未手动限制**，在生产环境中这是**严重隐患** —— SQL Server 会试图占用所有可用内存，导致操作系统和其他应用（如金蝶云星空、IIS、防病毒软件等）内存不足，引发系统卡顿、崩溃甚至蓝屏。

---

## ✅ 核心优化建议（针对你的硬件和业务场景）

### 🎯 1. 【必须做】限制 SQL Server 最大内存使用量

#### ❗为什么？

SQL Server 默认“贪吃”内存，不会主动留给 OS 和其他进程。即使你有 100GB 物理内存，也应预留一部分给操作系统和金蝶应用层。

#### ✅ 推荐设置：

- **总内存**: 100 GB
- **留给操作系统 + 其他应用**: 至少 16~20 GB（保守起见）
- **分配给 SQL Server**: **80 GB**

👉 在“服务器属性 → 内存”中设置：

```
最小服务器内存(MB): 0 （或设为 40960 = 40GB，避免频繁伸缩）
最大服务器内存(MB): 81920 （= 80GB）

```

> 💡 注：1 GB = 1024 MB → 80 × 1024 = 81920 MB

✅ 设置后点击“确定”，无需重启服务即可生效（动态调整）。

---

### 🎯 2. 【可选但推荐】设置最小内存（防止内存被过度回收）

如果你的服务器上只有 SQL Server 和金蝶应用，且希望保证数据库性能稳定，可以设置：

```
最小服务器内存(MB): 40960 （= 40GB）

```

这样即使系统压力大，SQL Server 也能保留至少 40GB 内存，避免因内存波动导致查询变慢。

---

### 🎯 3. 【高级优化】启用“锁定页面内存”权限（Lock Pages in Memory）

#### ⚠️ 适用条件：

- 操作系统是 **Windows Server**（非 Win10/Win11）
- SQL Server 运行账户具有“锁定页面内存”权限
- 用于防止 SQL Server 内存被换页到磁盘（提升稳定性）

#### 🔧 操作步骤：

1. 打开 `gpedit.msc` → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权利分配
2. 找到 **“锁定内存中的页面”**
3. 添加 SQL Server 服务启动账户（通常是 `NT SERVICE\MSSQLSERVER` 或自定义域账户）
4. 重启 SQL Server 服务

> ✅ 此操作可显著提升高负载下的稳定性，尤其适合金蝶这种 ERP 系统。

---

### 🎯 4. 【CPU 相关】检查并行度与成本阈值

虽然你有 24 核，但不要放任 SQL Server 自动决定并行计划。

#### 建议设置：

```sql
-- 查看当前配置
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism';
EXEC sp_configure 'cost threshold for parallelism';

-- 推荐设置（根据经验）：
EXEC sp_configure 'max degree of parallelism', 8;        -- 最多使用8个CPU核心 per query
EXEC sp_configure 'cost threshold for parallelism', 50;   -- 只有成本 > 50 的查询才启用并行
RECONFIGURE;

```

> 💡 理由：避免单个大查询占满全部24核，影响并发用户体验；同时避免小查询不必要的并行开销。

---

### 🎯 5. 【存储与 TempDB 优化】

#### ✅ TempDB 多文件配置（强烈建议）：

TempDB 是临时对象密集区，多文件可减少争用。

```sql
-- 假设你有4个逻辑驱动器（或SSD分区），每个放一个TempDB数据文件
ALTER DATABASE tempdb 
ADD FILE (NAME = tempdev2, FILENAME = 'D:\TempDB\tempdb2.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
-- 重复添加至共4~8个文件（一般不超过8个）

```

> 📌 文件大小建议初始设为相同（如8GB），增长步长一致，避免碎片。

#### ✅ 数据文件预分配空间：

不要依赖自动增长！提前为数据库主数据文件和日志文件分配足够空间（比如各50GB+），并关闭自动增长或设较大增量（如512MB）。

---

### 🎯 6. 【监控与维护】

#### ✅ 启用性能计数器监控：

- `SQLServer:Memory Manager\Total Server Memory (KB)`
- `SQLServer:Memory Manager\Target Server Memory (KB)`
- `Page life expectancy`（应 &gt; 300秒）
- `Batch Requests/sec`（反映吞吐量）

#### ✅ 定期更新统计信息 &amp; 重建索引：

```sql
-- 示例：每周凌晨执行
EXEC sp_updatestats;
-- 或使用 Ola Hallengren 脚本进行智能维护

```

---

### 🎯 7. 【金蝶云星空特别注意事项】

金蝶云星空对 SQL Server 有特定要求：

- 推荐使用 **简单恢复模式**（除非你需要 point-in-time recovery）
- 避免开启 “自动创建统计信息” 和 “自动更新统计信息”（由金蝶后台作业控制更佳）
- 确保 `READ_COMMITTED_SNAPSHOT` 开启（减少锁阻塞）：

```sql
ALTER DATABASE [YourK3CloudDB] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

```

---

## 📊 总结：你的服务器优化清单

<table id="bkmrk-%E9%A1%B9%E7%9B%AE-%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81-%E5%BB%BA%E8%AE%AE%E8%AE%BE%E7%BD%AE-%E6%98%AF%E5%90%A6%E7%B4%A7%E6%80%A5-%E6%9C%80%E5%A4%A7"><thead><tr><th>项目</th><th>当前状态</th><th>建议设置</th><th>是否紧急</th></tr></thead><tbody><tr><td>最大内存</td><td>2TB（危险！）</td><td>**80GB**</td><td>🔴 必须立即改</td></tr><tr><td>最小内存</td><td>0</td><td>40GB（可选）</td><td>🟡 推荐</td></tr><tr><td>并行度</td><td>默认（可能24）</td><td>**8**</td><td>🟡 推荐</td></tr><tr><td>成本阈值</td><td>默认5</td><td>**50**</td><td>🟡 推荐</td></tr><tr><td>TempDB 文件数</td><td>未知</td><td>**4~8个等大文件**</td><td>🟢 重要</td></tr><tr><td>锁定页面内存</td><td>未启用</td><td>**启用**（若为Server系统）</td><td>🟢 推荐</td></tr><tr><td>统计信息/索引维护</td><td>未知</td><td>**定期自动化**</td><td>🟢 必需</td></tr></tbody></table>

---

## 🛠️ 快速执行脚本（复制粘贴到 SSMS 执行）

```sql
-- 1. 设置内存上限 80GB
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 81920;
RECONFIGURE;

-- 2. 设置最小内存 40GB（可选）
EXEC sp_configure 'min server memory (MB)', 40960;
RECONFIGURE;

-- 3. 设置并行度和成本阈值
EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

-- 4. 开启读提交快照隔离（替换为你的数据库名）
ALTER DATABASE [Kingdee.K3Cloud] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

```

---

## ✅ 最后提醒

- 修改内存设置后，观察任务管理器或性能监视器，确认 SQL Server 实际占用内存不再持续增长。
- 如果后续发现内存不够（如 PLE &lt; 100），再逐步上调最大内存（每次+5GB）。
- 对于金蝶这类ERP系统，**稳定性 &gt; 极致性能**，宁可留点余量，也不要榨干资源。

---

如有需要，我可以为你生成完整的“金蝶云星空 + SQL Server 2022 优化部署文档”或提供 Ola Hallengren 维护脚本模板。欢迎继续提问！