一个 ZCode 技能,用于对 SQL Server 数据库执行 TPC-C 基准压力测试与满负荷稳定性测试。支持 SQL Server 2008/2012/2014/2016/2019/2022。
此技能使 ZCode 能够直接执行或指导管理员完成两类测试,可单选其一,也可先基准后稳定性一次完成全面评估:
| 测试类型 | 目标 | 典型场景 |
|---|---|---|
| ① 标准基准测试 | 测量峰值事务处理能力(NOPM/TPM),单轮 10–60 分钟 | 性能基线采集、配置对比、兼容性验证 |
| ② 稳定性压力测试 | 满负荷连续运行 6–48 小时,按五项判据输出正式验收结论(跑满时长、服务端零错误、吞吐保持率 ≥90%、内存健康、数据零损坏) | 长时间运行稳定性验证、上线前评估 |
| ③ 顺序执行 | 先执行 ① 再执行 ②,一次会话完成全面评估 | 验收测试 |
① 标准基准测试包含:
- 环境检查(HammerDB、ODBC 驱动、bcp 工具、SQL Server 补丁级别)
- 数据库连接测试与故障排查
- TPC-C 测试库的创建与管理
- 可配置并发数和时长的压力测试
- 实时监控 + 自动错误终止
- 测试结果分析与报告(NOPM/TPM)
② 稳定性压力测试包含:
- 满负荷标定:按并发阶梯探测,以吞吐平台确定饱和并发数
- 迭代预算:按单 VU 吞吐自动计算迭代上限,保障长时测试跑满全程
- 分钟级资源监控:CPU、内存、磁盘、事务日志、SQL 错误日志全程记录
- 五项判据验收:跑满时长、服务端零错误、吞吐保持率 ≥90%、内存健康、数据零损坏(DBCC CHECKDB)
- 测试后环境自动恢复
本仓库提供两个版本,根据你使用的 Agent 平台选择:
| 版本 | 目录 | 适用平台 | 特点 |
|---|---|---|---|
| ZCode 专用版 | .zcode/skills/hammerdb-test/ |
ZCode | 自动触发、自动执行、脚本模板自动替换 |
| 通用版 | universal/ |
AgentScope、QwenPAW、LangChain、AutoGPT 等任何平台 | 独立文档 + 独立脚本 |
两个版本的测试流程、监控项与验收标准保持一致。
# 克隆仓库
git clone https://github.com/Galo-Arc/hammerdb-test-skill.git
# 复制 ZCode 专用版到技能目录
xcopy /E /I hammerdb-test-skill\.zcode\skills\hammerdb-test %USERPROFILE%\.zcode\skills\hammerdb-test或将 hammerdb-test 文件夹复制到以下任意位置:
| 位置 | 作用域 |
|---|---|
<项目目录>/.zcode/skills/ |
仅当前项目 |
%USERPROFILE%/.zcode/skills/ |
本机所有项目 |
# 克隆仓库
git clone https://github.com/Galo-Arc/hammerdb-test-skill.git
# 通用版在 universal/ 目录下
# 将 universal/SKILL.md 作为知识库/System Prompt 提供给你的 Agent
# 将 universal/scripts/ 下的脚本放到 Agent 可访问的目录通用版使用方式:
- 将
universal/SKILL.md内容作为 System Prompt 或知识库 - Agent 按文档中的流程和脚本模板执行测试
安装后,输入以下任意内容即可触发技能:
/hammerdb-test 帮我在 youripaddress 上跑 HammerDB 测试
帮我用 TPC-C 压测一下这台 SQL Server
用 HammerDB 测一下数据库性能
跑一个 24 小时满负荷稳定性测试
SQL Server 稳定性测试
数据库兼容性验证
技能会先确认测试类型与参数(IP、认证方式、SQL Server/OS 版本、并发数、时长;稳定性测试还需确认数据库是否共用、可接受的维护窗口),再开始执行。以标准基准测试为例:
1. 检查环境是否就绪
2. 测试数据库连接
3. 创建 TPC-C 测试库
4. 执行试跑验证
5. 执行正式压力测试
6. 分析结果并生成报告
| 组件 | 是否必须 | 说明 |
|---|---|---|
| HammerDB 6.0+ | 是 | 下载地址:https://www.hammerdb.com |
| ODBC Driver 17 | SQL Server 2014 及以下必须 | 从微软官网下载 |
| ODBC Driver 18 | SQL Server 2016 及以上 | 随 SQL Server 工具安装 |
| bcp.exe | 是 | 安装 SQL Server 命令行工具 |
| ZCode CLI | 是 | Agent 运行平台 |
稳定性测试额外要求:
- 测试期间服务器不能重启或打补丁,需要预留完整的维护窗口
- 被测数据库在测试期间最好无其他业务负载
- 客户端磁盘需预留足够的日志空间(多小时满负荷写入)
例 1:标准基准测试
管理员输入:
帮我在 192.168.1.100 上用 1000 个并发连接跑 HammerDB 测试,
SQL Server 2019,sa 密码是 MyPass123,跑 2 小时
ZCode 自动执行:
1. 检查 HammerDB 安装情况
2. 验证 ODBC Driver 17 已安装
3. 测试到 192.168.1.100 的连接
4. 创建 TPC-C 测试库(10 个 warehouse)
5. 执行试跑测试(50 并发,10 分钟)
6. 执行正式测试(1000 并发,120 分钟)
7. 输出结果:XXX NOPM / XXX TPM
例 2:满负荷稳定性测试
管理员输入:
对 192.168.1.100 跑一个 24 小时满负荷稳定性测试,
SQL Server 2014,sa 密码是 MyPass123
ZCode 自动执行:
1. 确认时长、维护窗口与数据库共用情况
2. 探测并发阶梯,标定满负荷并发数
3. 计算迭代预算,部署监控脚本
4. 启动压测,全程记录资源与吞吐数据
5. 只读巡检,异常时按诊断流程定位
6. 按 24 小时实际表现给出验收结论
7. 执行 DBCC CHECKDB,恢复环境改动
hammerdb-test-skill/
├── README.md # 中文说明(默认)
├── README_EN.md # 英文说明
├── CHANGELOG.md # 更新记录
├── .gitignore
│
├── .zcode/skills/hammerdb-test/ # 【ZCode 专用版】
│ ├── SKILL.md # 技能主文档(测试方向、工作流程、故障处理)
│ ├── scripts/
│ │ ├── test_connection.tcl # 连接测试脚本模板
│ │ ├── build_schema.tcl # 建库脚本模板
│ │ ├── delete_schema.tcl # 删库脚本模板
│ │ ├── run_tpcc.tcl # 基准压测脚本模板
│ │ ├── run_stability.tcl # 稳定性测试脚本模板(含迭代预算计算)
│ │ ├── auto_monitor.ps1 # PowerShell 自动监控脚本
│ │ ├── stability_monitor.ps1 # 稳定性测试分钟级资源监控
│ │ ├── check_status.ps1 # 只读巡检脚本
│ │ ├── dbcc_check.ps1 # DBCC CHECKDB 执行脚本
│ │ ├── dbcc_check.bat # DBCC CHECKDB 输出捕获包装
│ │ ├── hdb_run.bat # UTF-8 控制台包装脚本
│ │ ├── prepare_tcl_library.ps1 # Tcl 库 UTF-8 补丁准备脚本
│ │ ├── create_cust_last.sql # cust_last 存储过程手工修复脚本
│ │ ├── restore_cleanup.bat # 测试后环境恢复脚本(计划任务直接执行)
│ │ └── admin_cleanup.bat # 管理员一次性清理脚本(服务器控制台运行)
│ └── references/
│ └── troubleshooting.md # 故障诊断手册
│
└── universal/ # 【通用版】AgentScope / QwenPAW / 其他平台
├── SKILL.md # 完整技能文档(可作为 System Prompt)
├── troubleshooting.md # 故障诊断手册
└── scripts/ # 与 ZCode 版相同的脚本集
标准基准测试快速给出 NOPM/TPM 基线;稳定性测试按五项判据给出正式验收结论;两者可顺序连跑完成全面评估。
auto_monitor.ps1 实时监控 HammerDB 输出,检测到错误模式即自动终止进程并报告问题。不再出现"跑了几个小时结果第 5 分钟就崩了"的情况。
根据 SQL Server 版本自动选择正确的 ODBC 驱动:
- SQL Server 2008/2012/2014 → ODBC Driver 17(避免 SSL 证书问题)
- SQL Server 2016+ → ODBC Driver 17 或 18 均可
稳定性测试脚本内置迭代预算计算与分钟级资源监控,配合环境自恢复脚本,长时测试无需人工值守,结束后自动具备验收所需的全部数据。
实际测试中遇到的每一个错误都有记录,包含原因和解决方案:
- SSL 证书错误
- bcp 工具找不到
- 连接超时
- Schema 冲突
- 老版本 Windows / SQL Server(2008 R2 等)兼容问题
- 性能问题
ZCode 使用脚本时会自动替换以下占位符:
| 变量 | 说明 | 示例 |
|---|---|---|
__TARGET_IP__ |
SQL Server IP 地址 | youripaddress |
__PORT__ |
SQL Server 端口 | 1433 |
__SA_USER__ |
登录用户名 | sa |
__SA_PASSWORD__ |
登录密码 | yourpassword |
__ODBC_DRIVER__ |
ODBC 驱动名称 | ODBC Driver 17 for SQL Server |
__WAREHOUSES__ |
Warehouse 数量 | 10 |
__BUILD_VUS__ |
建库用的虚拟用户数 | 1 |
__USE_BCP__ |
是否使用 BCP 模式 | false |
__VU_COUNT__ |
并发连接数 | 1000 |
__DELAY_MS__ |
用户操作间隔(毫秒) | 300 |
__RAMPUP__ |
预热时间(分钟) | 2 |
__DURATION__ |
测试时长(分钟) | 120 |
__PER_VU_TPM__ |
单 VU 每分钟事务数(用于迭代预算) | 6000 |
即使不使用 ZCode,本仓库同样可以使用:
- 脚本:直接用 HammerDB CLI 执行
.tcl和.ps1脚本 - 故障排查:参考
references/troubleshooting.md解决问题 - 操作流程:按照
SKILL.md中的步骤手动操作
- Fork 本仓库
- 创建功能分支
- 提交 Pull Request
欢迎提交 Issue 和改进建议!
MIT License
基于以下真实环境测试构建:
- 浪潮虚拟化平台
- 海光 Hygon C86 4代处理器
- Windows Server 2019 + SQL Server 2014
更新记录见 CHANGELOG.md。