我正在 SQL 2008 R2 机器上恢复 SQL 2000 用户数据库,但有时我会收到以下错误。这是 SQL 日志。
22/11/2010 09:32:00 | SPID61 | 启动数据库“DB_OPP_P_2”。
22/11/2010 09:32:00 | SPID61 | 数据库“DB_OPP_P_2”被标记为正在恢复,并且处于不允许恢复运行的状态。
22/11/2010 09:32:33 | SPID61 | 启动数据库“DB_OPP_P_2”。
22/11/2010 09:32:33 | SPID61 | 恢复正在数据库“DB_OPP_P_2”(51) 中写入检查点。这只是一条信息性消息。无需用户操作。
22/11/2010 09:32:36 | SPID61 | 错误:928,严重性:20,状态:1。
22/11/2010 09:32:36 | SPID61 | 在升级期间,数据库引发异常 156,严重性 25,状态 1,地址 0000000002225A9F。使用异常编号确定原因。
由于它显示异常发生在升级阶段,我相信它发生在恢复百分比达到 100% 之后。
我已经实现了这个恢复的脚本重试,它尝试了 5 次都失败了。但是,如果我使用相同的还原脚本手动重试,则还原完成。我已经在源上运行 DBCC CHECKDB 并且没有返回错误。
数据库兼容级别为80(sql 2000),版本为539。
在当时有问题的数据库上运行升级顾问时,我看到 27 个具有旧外部连接 sintax *=, =* 的对象
不幸的是,我将无法更改 procs 以检查这是否是罪魁祸首。另一种可能性是有很多没有 BEGIN 和 END 分隔其扩展的过程,如果我批量创建它们,这会使 SQL 混淆。
更新:
- 我已经成功地在 SQL 2000 机器上恢复了数据库。
- 我还对我的工作实施了重试行为,该行为全部失败了 5 次。
重试行为失败。但奇怪的是,如果我使用相同的恢复脚本重试该作业,则尝试恢复成功。
更新 2: 我在迁移到 sql 2008 r2 时手动恢复了数据库。所以我没有解决这个问题,也不会解决它,因为在 sql 2008 r2 上不会发生这种情况。谢谢你的帮助。