Files
PayrollManagementSystem/docs/SQLServer2008R2测试环境.md
T

69 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SQL Server 2008 R2 测试环境与验收手册
> 目标:在真实 Windows + SQL Server 2008 R2(10.50.x)环境中恢复客户原始备份,完成同版本兼容验收,关闭「2008 R2 状态 PENDING」。本手册在取得合法安装介质后即可照做;介质到位前的准备工作只做第 2、3 节中不依赖介质的部分。
## 1. 背景与当前状态(2026-10-28)
- 客户源备份 `ceshi20261026.bak` 版本为 10.50.1600。按用户 2026-10-28 决定,先以该版本搭建开发验收环境;生产完整版本号后补,有差异时再核验(客户版 E01/E03)。
- 本地 Docker 已用 SQL Server 2022 副本完成恢复 PoC:完整 CHECKDB 通过、只读账号可用、六类查询两轮核验 933,203 行无失败。该副本只用于结构核验与开发,**不能替代同版本验收**。
- Hyper-V 虚拟机外壳已建于 `D:\work\app\tplus-vm`,处于关机、断网状态;Windows 与 SQL Server 2008 R2 安装介质尚未到位(客户版 E03)。
## 2. 环境约定
| 项目 | 约定 |
| --- | --- |
| 虚拟机目录 | `D:\work\app\tplus-vm` |
| SQL Server 数据与日志 | 2022 PoC 使用 `D:\work\app\tplus-sqlserver\data` 和 `log`;2008 R2 使用 D 盘虚拟磁盘内的来宾目录,恢复时确认实际路径 |
| 备份文件 | 现有脚本使用 `D:\work\app\tplus-sqlserver\backup`;复制到虚拟机前后核对 SHA-256 |
| 虚拟机网络 | 安装与验收期间保持仅主机或内网隔离,不接入公网 |
| 凭据 | 只读账号凭据走双方认可的私密渠道交接;不写入本文档、代码或 Git |
| 项目依赖脚本 | `scripts/tplus/`(工作区准备、备份检查、恢复、只读账号、结构盘点) |
客户版 E01 先使用本地恢复实例的连接信息和专用只读账号,E02 先用现有开发主机与网络,生产信息后补。E03 的目标版本已确定,但合法介质尚未到位,不能据此把安装或验收标为完成。
## 3. 装机步骤(依赖介质,介质到位后执行)
1. 通过 Hyper-V 管理器核对已有虚拟机与 D 盘磁盘位置,保持网络隔离。`prepare_sql2008r2_vm.ps1` 是创建脚本,已有同名虚拟机时拒绝覆盖,不用于状态检查。
2. 准备适配 SQL Server 2008 R2 的合法 Windows 介质,安装来宾系统。记录系统版本及补丁,不把来宾系统版本当作未来工资部署主机的要求。
3. 安装 SQL Server 2008 R2,基准锁定为 `10.50.1600`。排序规则从备份元数据或恢复库核验,不能凭文档默认值猜测。
4. 首轮保留该基准;如后续需要测试 SP3 等其他补丁,另记版本和结果,不覆盖基准验收记录。
5. 在运行后端/worker 的电脑上准备 ODBC 驱动。驱动、Windows 和 TLS 的实际组合须实测后记录,不能只根据驱动名称认定兼容。默认启用加密,隔离环境的显式回退步骤见本地开发手册。
## 4. 备份恢复步骤
现有备份检查、恢复、创建只读账号及盘点脚本调用 Docker 容器,使用容器内路径,仅适用于 2022 PoC。2008 R2 在虚拟机中按以下步骤操作,不直接套用容器脚本。
1. 在来宾系统中复制原始备份,核对文件哈希;由测试环境管理员通过数据库管理工具执行备份验证并读取文件列表,记录实际数据/日志逻辑名。
2. 恢复到新的测试数据库,在恢复界面为每个逻辑文件指定来宾磁盘路径;确认目标库不存在,不覆盖其他数据库。
3. 恢复后执行完整数据库一致性检查并留档;记录版本、排序规则和恢复数据库名。
4. 创建仅用于该测试库的登录和用户,授予读取权限,核对角色、显式授权和禁止写入的结果。恢复/建账号使用管理员,应用始终使用专用只读账号。
5. 对照 `db/queries/tplus/` 的九类实体查询和关联核验查询盘点结构、行数及汇总金额;保留差异原因。报告不包含凭据或个人明细。
## 5. 同版本验收清单(逐项通过后关闭 PENDING)
| # | 验收项 | 通过标准 |
| --- | --- | --- |
| 1 | 版本确认 | `SERVERPROPERTY('ProductVersion')` 为 10.50.1600(末尾 .0 等价);其他 10.50 补丁版本单独记录,不能冒充基准通过 |
| 2 | 驱动连接 | 从实际运行后端的电脑连接成功,记录驱动名称、版本与加密/证书设置 |
| 3 | 只读权限 | 用只读账号执行六类查询成功;执行任何写操作被拒绝 |
| 4 | 六类查询 | 人员、客户、产品、订单、发货、收付款九个白名单 SQL 全部返回,行数与 Docker 副本一致 |
| 5 | 中文数据 | 姓名、客户名、产品名等中文字段读取无乱码(只读账号仅验证读取) |
| 6 | 日期字段 | 凭证日期、审核日期、到账日期等候选字段格式与空值表现正常 |
| 7 | 金额精度 | 金额字段以 Decimal 读取,小数位与源数据一致 |
| 8 | 断连超时 | 仅在隔离测试实例模拟断连;批次不得误报成功,批次失败或行级错误可追溯,恢复后可重试 |
| 9 | 重复同步 | 同一备份重复 staging,相同行哈希全部去重跳过,行数不变 |
| 10 | 关联核验 | `relationship_audit` 数量统计与 Docker 副本结果一致 |
## 6. 产出与归档
- 验收通过后产出报告(含上表逐项结果与 `@@VERSION` 输出),归档至 `.ai/archive/ai-aux/`;项目文档更新结论为「2008 R2 验收通过」。
- 同步更新 `.ai/AI_CONTEXT.md` 与 `.ai/PROJECT_PROGRESS.md`。
- `check_compatibility.py` 默认核对 10.50.1600,复用应用连接策略;它的脚本检查通过不能替代本表中的断连、重复同步及完整权限验收。
- 验收中发现的字段差异回到 `docs/客户待确认事项表_2026-10-28_客户版.xlsx` 对应编号,不直接改代码。
## 7. 明确边界
- 本环境仅验收 T+ 源库只读访问;工资系统生产部署(客户版 E02)另行确认。
- 客户生产 T+ 原库不升级、不改动;2022 副本不回迁。
- 时间增量(确认单 #13)不在本手册范围内,待 rowversion 验证方案另行评审。