SQL Server 2000与SQL Server 2005的数据库格式不同。SQL Server 2000的数据库可以附加到2005中,但是2005的数据库不能恢复或附加为2000。可以将2005的对象生成脚本,在2000中执行。总之,2000可以恢复为2005,2005不能直接恢复为2000。

解决方案 »

  1.   


    SQLServer2005数据库还原到SQLServer2000http://dev.csdn.net/author/taito/840c28a03ec0432492db18a329125bb5.html新技术前沿版主 athossmth 说可以,楼主可以试下:用sql 2005 client side连接sql 2000 server,然后restore,这样,sql 2005的客户端可以认识sql 2005的备份格式,restore成功。http://community.csdn.net/Expert/topic/4969/4969701.xml?temp=.9756891
      

  2.   

    直接restore应该是不行的, 用脚本+导数据肯定没有问题
    2005转到2000的步骤步骤
    1. 生成for 2000版本的数据库脚本
    2005 的manger studio
    -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
    -- 右键要转到2000的库
    -- 任务
    -- 生成脚本
    -- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
    -- 勾选"为所选数据库中的所有对象编写脚本"
    -- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
    -- 其他选项根据需要设置
    -- 最后把脚本保存到一个 .sql 脚本文件2. 在2000中创建目标数据库
    在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库3. 将数据从2005导到2000
    2005 的manger studio
    -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
    -- 右键要转到2000的库
    -- 任务
    -- 导出数据
    -- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
    -- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
    -- 在"选择源表和源视图"中, 选择所有的表
    -- 最后完成
      

  3.   

    用sql 2005 client side连接sql 2000 server,然后restore,这样,sql 2005的客户端可以认识sql 2005的备份格式,restore成功。---------------------------------------------------------------------------
    这种方法应该不行吧? sql是服务型数据库, 所有的处理都是由sql服务提供的(不然为什么恢复的时候, 访问备份文件是基于服务器的?),  所以按道理不存在2005的客户端连接2000可以认识2005备份格式的问题.
      

  4.   

    刚刚特意测试了一下:
    环境:
    win2003+sp1
    sql 2000 + sp3
    sql 2005 + sp1
      

  5.   

    -- 步骤1, 在sql 2000中生成备份文件CREATE DATABASE [jack_test] 
    ON  PRIMARY ( 
    NAME = N'jack_test', 
    FILENAME = N'C:\jack_test.mdf' )
     LOG ON ( 
    NAME = N'jack_test_log', 
    FILENAME = N'C:\jack_test_log.ldf')
    GOBACKUP DATABASE [jack_test]
    TO DISK = 'C:\jack_test.bak'
    WITH FORMAT
    GODROP DATABASE [jack_test]
    GO
      

  6.   

    -- 步骤2, 在2005中恢复, 然后生成2005的备份RESTORE DATABASE [jack_test]
    FROM DISK = 'C:\jack_test.bak'
    GOBACKUP DATABASE [jack_test]
    TO DISK = 'C:\jack_test.bak'
    WITH FORMAT
    GODROP DATABASE [jack_test]
      

  7.   

    -- 步骤3. 在2000中恢复2005的备份RESTORE DATABASE [jack_test]
    FROM DISK = 'C:\jack_test.bak'
    GO
    -- 结果得到错误提示:
    Msg 3205, Level 16, State 2, Line 1
    Too many backup devices specified for backup or restore; only 64 are allowed.
    Msg 3013, Level 16, State 1, Line 1
    RESTORE DATABASE is terminating abnormally.
      

  8.   

    上述测试在同一台电脑的两个实例中进行, 一个是2000实例, 一个是2005实例.
    测试均在 SQL Server Manger Studio 中执行语句.在所有的测试步骤中, 我并未对数据库做任何处理, 所以不存在对象不兼容的问题.