3. 数据库配置与连接管理

在 TestStand 中记录测试结果,第一步不是写 SQL,而是让 TestStand 能够稳定地“找到并打开”目标数据库。TestStand 本身不直接实现数据库协议,它通过 Windows 的 ODBC(Open Database Connectivity)层与数据库通信,再由 ODBC 驱动把请求翻译成具体数据库(Access、SQL Server、Oracle 等)能理解的协议。因此,理解“连接字符串 → ODBC 数据源 → 驱动 → 数据库”这条链路,是配置与连接管理的核心。

连接字符串与 ODBC 数据源的关系

TestStand 的数据库选项(Database Options)中,最关键的一项就是连接字符串(Connection String)。它有两种典型写法:一种是 DSN(Data Source Name)方式,另一种是 DSN-less(无数据源)方式。DSN 方式依赖在“ODBC 数据源管理器”中预先创建的系统 DSN 或用户 DSN,连接字符串只需引用名称,例如 DSN=TS_Results;UID=sa;PWD=***;。DSN-less 方式则把驱动和数据库位置全部写进字符串,例如 Access 的 Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\TestStand\Results\results.accdb;,或 SQL Server 的 Driver={ODBC Driver 17 for SQL Server};Server=192.168.1.50;Database=TSResults;UID=sa;PWD=***;。

两者的取舍很实际:DSN 便于集中管理、切换数据库时只改 DSN 不动序列文件,适合实验室或产线统一部署;DSN-less 不依赖客户端机器上的 DSN 配置,序列文件拷贝到另一台机器即可运行,适合分发和版本控制。工程上常见的做法是:开发阶段用 DSN 方便调试,交付阶段改为 DSN-less 保证可移植性。

TestStand 数据库连接链路与三种数据库的配置差异 TestStand 引擎 Database Options Connection String Insert / Update 语句 ODBC 层 DSN / DSN-less ODBC Driver Manager 驱动翻译协议 目标数据库 Access (.accdb) / SQL Server / Oracle 表:UUT_RESULT、STEP_RESULT 字段:UUT_SERIAL、TEST_TIME、STATUS 三种数据库的连接字符串与关键配置点 Access Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=D:\TS\results.accdb; 要点:文件路径必须存在 且运行账户有写权限 单文件、并发写入弱 SQL Server Driver={ODBC Driver 17 for SQL Server}; Server=IP;Database=TSResults; 要点:启用 TCP/IP 与 SQL 身份验证,放行 1433 适合产线高并发写入 Oracle Driver={Oracle in OraClient}; Dbq=ORCL;Uid=tsuser; Pwd=***; 要点:需装 Oracle Client 配置 tnsnames.ora 注意 32/64 位驱动匹配

在 Database Options 中完成配置

打开 TestStand 的 Configure > Database Options,可以看到几个关键区域。第一是“Database Management”中的连接字符串输入框,可直接填写 DSN 或 DSN-less 字符串。第二是“TestStand Database Schema”相关设置,用于指定结果表结构文件(.ini 或 .sql),它决定了 TestStand 往哪些表、哪些字段写数据。第三是“Record Results”选项,控制记录 UUT 结果、步骤结果、测量值等粒度。

配置完成后,务必点击 Test Connection 或使用“Verify”按钮验证连接。验证失败时,TestStand 会返回 ODBC 错误码,例如 [Microsoft][ODBC Driver Manager] Data source name not found 表示 DSN 不存在,Login failed for user 'sa' 表示账号密码或认证模式不对。这些错误信息是排障的第一手依据。

不同数据库的连接管理要点

Access 适合单机或小规模记录。它的连接字符串最简单,但要注意:数据库文件不能放在网络共享路径上供多台机器同时写入,否则容易出现锁冲突或文件损坏。建议每台测试机使用本地独立文件,或改用 SQL Server。

SQL Server 是产线最常用的选择。配置时需确认:SQL Server 已启用 TCP/IP 协议、端口 1433 已放行、登录模式为“SQL Server 和 Windows 身份验证混合模式”。连接字符串中推荐使用 Encrypt=no;TrustServerCertificate=yes; 避免自签名证书导致的连接失败。若使用 Windows 身份验证,则写 Trusted_Connection=yes; 并省略 UID/PWD。

Oracle 的配置最复杂。除了安装 Oracle Client,还要保证 ODBC 驱动位数与 TestStand 进程位数一致——64 位 TestStand 必须配 64 位 Oracle ODBC 驱动,否则会出现“驱动未找到”或“架构不匹配”。连接字符串中的 Dbq 对应 tnsnames.ora 中的服务名,需提前用 tnsping ORCL 验证网络服务名可达。

建议把连接字符串中的密码改为从环境变量或 TestStand 的 StationGlobal 读取,避免明文写在序列文件中。例如在 Database Options 中使用 PWD=%DB_PWD%,由部署脚本注入实际值。

连接管理的工程实践

实际项目中,连接管理不只是“填一个字符串”。建议遵循以下做法:第一,为开发、测试、生产分别建立不同的 DSN 或连接字符串,通过 TestStand 的搜索路径或配置文件切换,而不是每次手动改。第二,在序列的 Setup 步骤中增加一个“数据库连接检查”步骤,用简单查询 SELECT 1 验证连接可用,失败则记录到本地日志并决定是否继续测试。第三,定期检查 ODBC 驱动版本,尤其是 SQL Server 从旧版 SQL Server 驱动迁移到 ODBC Driver 17/18 时,连接字符串的 Driver 名称必须同步修改。

此外,TestStand 的数据库记录是异步的:测试步骤执行与数据库写入可能不在同一线程。如果连接断开,结果可能丢失。因此对于关键产线,建议启用 TestStand 的“Database Options > Record Results > On Failure”策略,或使用本地缓存文件先落盘、再批量入库,保证结果可追溯。

掌握连接配置后,下一步才是设计结果表结构和写入语句。连接是通道,通道不通,后续所有记录与追溯都无从谈起。