SQL Server Express 的 10GB 单库上限到底怎么算?
详解 SQL Server Express 10GB 单库上限的计算口径:哪些文件计入、何时触及、触顶后引擎行为,以及触顶前的容量规划动作。
结论先行
SQL Server Express 的 10GB 上限按单个数据库计算:该库的 .mdf、.ndf、.ldf 文件实际占用之和不得超过 10GB,且每个文件的最大尺寸也要 ≤ 10GB。触顶后写入会被拒绝(库进入只读不可写状态),已有的读取与备份仍可执行,不会自动停止服务。
上限怎么算
| 口径 | 规则 |
|---|---|
| 按库计 | 每库 .mdf + .ndf + .ldf 合计 ≤ 10GB |
| 按文件计 | 单个文件最大 10GB |
| 多库 | 每库独立 10GB 额度(见「多库上限如何计算」一文) |
| 增长方式 | 达到上限后自动增长失效,写入报错 |
10GB 是文件物理占用,不是「表的数据大小」。碎片、日志增长都会推高占用,实际可用空间比表数据总和更小。
触顶后会发生什么
- 日志与数据文件无法自动增长。
- 新的 INSERT/UPDATE 写操作报错(典型为磁盘/容量类错误,具体码以引擎日志为准)。
- 已有数据读取、备份不受影响。
- 需清理、收缩或迁移后恢复写入。
触顶前的监控动作
- 阈值预警:库容量达 8GB(约 80%)就开始规划,别等 10GB 报警。
- 查当前占用:在 SSMS 里看「数据库 → 属性 → 文件」或跑系统视图。
- 规划余量:
.ldf在大批量写入后会膨胀,10GB 里要留出日志空间。 - 长期方案:增长快就评估迁移到 SQL Server 2022 Developer 档位做开发测试,生产则走更大版本(见 SQL Server 版本总览)。