SQL Server backup 只能向较新版本兼容。旧 engine 无法 restore 新 engine 创建的 BAK,因此需要版本转换,而不是直接 RESTORE。
遇到 backup 版本不兼容错误时怎么办
保留原始 backup,在兼容的新版本上打开它,在全新的旧版目标上重建数据库,复制数据和受支持对象,然后创建目标版本原生 BAK。
为什么 restore 会被拒绝
较新的 SQL Server engine 可能增加旧 engine 不理解的 metadata、storage structures 和 features。BAK 文件保存的是这些页面的物理表示,因此修改 COMPATIBILITY_LEVEL 不能让旧版本读取它。
哪些方法不能解决问题
Generate Scripts、Import/Export 和直接 RESTORE 都存在重要缺口;没有受控流程时,可能遗漏 constraints、indexes、identity values、programmable objects 或数据完整性证据。
受支持的 conversion 路径
以 read-only 模式检查 source,创建干净的 target schema,分批传输并验证 rows,重建受支持的 modules,完成 audit,然后在 target engine 上生成 native BAK。