3. 迁移前的数据备份与系统快照

WinCC 旧监控系统的迁移,真正决定成败的往往不是新系统装得多顺利,而是旧系统在动手之前有没有被完整“冻结”下来。迁移过程中一旦发现新画面数据对不上、归档曲线缺失、某个操作员账号登不进去,唯一能救场的依据就是迁移前留下的那份全量备份。本节要解决的核心问题是:把旧 WinCC 项目里所有会随迁移而改变、丢失或无法重建的东西,全部固化成可回滚的副本,并形成一份能直接执行的备份与回滚预案。

一、先分清“哪些东西必须备份”

WinCC 项目并不是一个单一文件,它由多个相互关联的部分组成,迁移时各自的风险点不同。可以按下面的层次来梳理:

  • 项目本体:.mcp(WinCC 项目文件)或 .mdf(多用户项目),以及同目录下的 PRJ 文件夹、GraCS(画面)、ScriptLib(全局脚本库)、TagLogging(变量记录)、AlarmLogging(报警记录)等子目录。
  • 归档数据库:变量归档与报警归档的底层数据库(SQL Server 实例中的 CC_<项目名> 系列库),这是历史曲线和报警查询的数据来源,迁移后往往无法从新系统反向还原。
  • 脚本:全局脚本(C 脚本、VBS)、画面内嵌脚本、动作脚本,以及脚本引用的自定义函数库。
  • 画面与图形:.pdl 画面文件、自定义图库、ActiveX 控件、外部引用的图片资源。
  • 用户管理与授权:WinCC 用户管理器中的用户、权限等级、登录策略;以及授权文件(AX NF ZZ 隐藏目录下的授权盘文件、USB 加密狗信息)。
  • 系统环境快照:操作系统版本与补丁、WinCC 版本与补丁号、SQL Server 版本、计算机名、网卡与 IP 配置、OPC/通信驱动配置。

其中授权文件和归档数据库是最容易被忽略、又最难补救的两项。授权一旦丢失,新系统可能直接进入演示模式;归档数据库若未单独备份,仅靠项目复制可能只带走结构而丢掉历史数据。

二、备份的三种粒度与适用场景

实际工程中不会只用一种备份方式,而是按“项目级—数据库级—系统级”三层叠加,形成互补。

层级备份对象常用方法主要用途
项目级整个 WinCC 项目文件夹WinCC 项目管理器“复制项目”或直接拷贝 PRJ 目录快速恢复画面、脚本、变量结构
数据库级归档数据库SQL Server 备份或分离后拷贝 .mdf/.ldf保留历史曲线与报警记录
系统级操作系统、授权、驱动系统镜像或整盘克隆极端情况下的整机回滚

项目级备份建议在 WinCC 项目管理器中使用“复制项目”功能,而不是简单地在资源管理器里拖拽文件夹。原因是复制项目会自动处理项目内部路径引用和部分运行时锁定文件,减少拷贝到一半被占用而失败的概率。数据库级备份则要在 SQL Server Management Studio 中对 CC_<项目名>_<时间戳> 形式的归档库执行“任务→备份”,输出 .bak 文件,并记录备份完成时间。

备份前先停止 WinCC 运行系统(Runtime),并确认归档数据库没有正在写入。运行状态下拷贝归档库,极易得到损坏或时间点不一致的副本。

三、备份与回滚的整体关系

下面这张图把“旧系统全量备份”到“迁移失败可回滚”的完整链路画出来,重点标出各备份产物与回滚动作之间的对应关系,便于在实战中按图核对。

旧 WinCC 系统全量备份 → 迁移 → 回滚链路 旧 WinCC 系统 项目 / 画面 / 脚本 归档库 / 用户 / 授权 OS / SQL / 驱动 全量备份动作 停 Runtime → 复制项目 备份归档库 .bak 导出授权 / 记录环境 备份产物(带时间戳) ① 项目副本 PRJ_20240612 ② 归档库 CC_LINE1_20240612.bak ③ 授权导出包 + 环境快照清单 迁移到新系统 / 新版本 画面转换 · 变量映射 · 归档重建 · 授权重装 迁移验证是否通过? 画面/归档/用户/授权 迁移完成 保留备份至观察期结束 通过 回滚预案执行 还原项目副本 附加归档库 .bak 重装授权 / 恢复环境 不通过 恢复旧系统运行

四、回滚预案要写清楚什么

回滚预案不是一句“出问题就还原”,而是一份在压力下也能照着做的操作说明。它至少要回答四个问题:什么条件下触发回滚、回滚到哪个时间点、按什么顺序还原、还原后如何确认系统可用。

触发条件建议写成可判断的客观标准,例如:新系统连续 30 分钟内出现归档曲线断点且无法补齐;关键操作员账号无法登录且权限重建失败;授权状态显示为演示模式超过 1 小时。回滚时间点应明确到具体备份批次,例如“回滚至 2024-06-12 22:00 的项目副本与归档库”。还原顺序通常是:先停新系统 → 还原项目副本 → 附加归档数据库 → 恢复授权 → 启动 Runtime 验证。验证环节要逐项确认画面能打开、历史曲线能查询、报警能刷新、用户能登录。

回滚预案必须在迁移开始前就写好并演练过关键步骤,不能等迁移失败后再临时拼凑。演练时至少验证一次“项目副本能否被 WinCC 正常打开”和“归档库 .bak 能否成功还原”。

五、一次旧系统全量备份实战

下面以某生产线单机 WinCC 项目 LINE1 为例,给出一套可直接参照执行的备份流程。示例中的路径、时间戳和文件名为教学假设,实际使用时替换为现场真实值。

  1. 停止运行系统并记录状态:在 WinCC 项目管理器中停止 Runtime,记录当前项目版本、WinCC 版本号、SQL Server 实例名,以及当前系统时间。
  2. 复制项目:使用“项目→复制”功能,将 LINE1 复制为 LINE1_BAK_20240612,输出到独立磁盘(如 D:\WinCC_Backup\),不要与原项目放在同一物理盘。
  3. 备份归档数据库:在 SQL Server Management Studio 中找到 CC_LINE1_20240612 归档库,执行完整备份,输出 CC_LINE1_20240612.bak。
  4. 导出脚本与画面:将 GraCS、ScriptLib 目录整体拷贝一份,并对关键全局脚本单独导出为文本,便于比对。
  5. 备份用户与授权:导出用户管理器配置;记录授权盘文件所在隐藏目录 AX NF ZZ 的内容清单,必要时用授权工具导出授权信息。
  6. 生成环境快照清单:记录操作系统版本、补丁号、计算机名、IP、通信驱动版本,形成一份文本清单随备份一起存放。
  7. 校验备份完整性:检查项目副本能否被 WinCC 打开、.bak 文件大小是否合理、脚本目录文件数量是否与原目录一致。

备份完成后,建议生成一份可填写的备份记录表,作为迁移和回滚时的核对依据:

项目示例值校验方式
项目副本路径D:\WinCC_Backup\LINE1_BAK_20240612WinCC 可正常打开
归档库备份文件CC_LINE1_20240612.bakSSMS 可还原
脚本/画面目录GraCS、ScriptLib 副本文件数量一致
授权信息AX NF ZZ 清单授权工具可识别
环境快照OS/SQL/驱动版本清单与现场一致
备份时间2024-06-12 22:00与回滚点对应

最后要强调的是:备份的价值只有在“能还原”时才成立。完成全量备份后,务必在测试环境或空闲时段实际执行一次还原验证,确认项目副本能打开、归档库能附加、授权能识别。只有这一步通过了,回滚预案才真正具备可执行性,迁移也才有底气往下走。