0

我正在 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 上不会发生这种情况。谢谢你的帮助。

4

2 回答 2

1

检查 SQL Server 2000 中数据库的兼容性:它们是 65 吗?

基本上,错误 156 是不正确的语法,通常是由兼容性不匹配引起的。SQL Server 2008 不支持“65”

您是否在备份/恢复之前尝试了升级顾问?

编辑:

外连接。嗯

刚刚注意到,对于SQL Server 2005,它已停产,但对于SQL Server 2008,它已弃用。我的猜测是,无论升级顾问和 MSDN 怎么说, *0and语法都会破坏事物。0*就我个人而言,我没有使用过它,呃,我从 6.5 迁移到 SQL Server 7 ......

于 2010-09-27T21:15:42.710 回答
0

我在迁移到 sql 2008 r2 时手动恢复了数据库。

所以我没有解决这个问题,也不会解决它,因为我已经转移到 sql 2008 r2 并且不再发生这种情况。

非常感谢您的帮助。

于 2011-02-16T13:46:26.377 回答