将备份从SQL2K还原到SQL2008R2时出错

时间:2010-09-27 21:02:34

标签: sql-server sql-server-2008 database-restore

我正在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 * =,= *

不幸的是,我无法改变触发器以检查这是否是罪魁祸首。 另一种可能性是有很多过程没有BEGIN和END分隔它的扩展,如果我在批处理中创建它们会混淆SQL。

更新

  • 我已成功恢复SQL 2000框上的数据库。
  • 我还在我的工作上实施了一次重试行为,这次行为失败了5次。

重试行为失败。但奇怪的是,如果我使用相同的恢复脚本重试,则尝试恢复成功。

更新2: 我在迁移到sql 2008 r2时手动恢复了数据库。 所以我没有解决这个问题,并且不会修复它,因为在sql 2008 r2上这不会发生。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

您是否在备份/恢复前尝试upgrade advisor

编辑:

外部加入。嗯

注意到SQL Server 2005 it's discontinued而是SQL Server 2008 it's deprecated。我的猜测是,无论升级顾问和MSDN说什么,*00*语法都会破坏。我个人从未使用它,呃,我从6.5 ...

迁移到SQL Server 7

答案 1 :(得分:0)

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

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

非常感谢您的帮助。