常见问题 SSMS查询结果结果集
SSMS 查询结果不完整或只显示一部分
SSMS 里结果「只有 200 行」「被截断」的常见原因:结果集行数限制、单元格截断显示、查询本身被改写,逐项区分方法。
发布于 2026/11/11
所属频道 SQL Server
简短答案
SSMS 结果「不全」通常是三件事之一:结果网格默认只回传前 200 行(或你设过 500 上限)、长文本单元格默认截断显示、或查询被 TOP/分页改写过。先看是哪一种。
排查步骤
- 看「结果消息」里的行数提示:若写着「返回了前 N 行」,是结果集行数上限在起作用。
- 改法:工具 → 选项 → 查询结果 → 结果集 → SQL Server → 网格结果,调大「将字符数据截断为」与「将二进制数据截断为」,或「在结果中显示的总行数」上限。
- 长文本列只显示前段:同属网格截断选项,调大字符截断长度,或把列值导到文本看完整内容。
- 确认 SQL 本身:
SELECT TOP、OFFSET/FETCH、WHERE条件把结果截了——这是查询逻辑,不是 SSMS 问题。 - 导出完整结果:结果网格右键 → 结果另存为(CSV/TXT),存盘前 SSMS 会把被截断的行按上限导出,导出前先把上限调足。
- 大批量结果别硬塞网格:改用
BULK INSERT反向思路(导出用bcp/导出向导)或在引擎侧落临时表,各版本导出能力以 SQL Server 2022 Developer 条目页核对。
现象对照表
| 现象 | 指向 |
|---|---|
| 固定停在 200 行 | 网格行数默认上限 |
| 长列只显示开头 | 字符/二进制截断 |
| 行数明显偏少 | 查询被改写(TOP/条件) |
操作小结
- 先看结果消息的行数提示,分清是截断还是查询本身。
- 上限调足再导出,别导出截断版。
- 超大结果走导出向导或落临时表,别堆网格。