SQL2005备份如何在SQL2000上还原

时间:2021-07-03 20:47:23
以前帮客户做了一个网站.是VS2005+2000的数据库后来不知道为什么..将数据库转为2005的了..过了一段时间又要转成2000的..郁闷至极..主要是从来没弄过..结果就到网上去找..找了整整一个上午.终于将这个问题解决..可能有点麻烦..有高手还望指正!
一,首先将05的数据库备份还原到本机的05中
  通过在空的数据库上右键-任务-还原 来完成
二,在05数据库上右击-任务-生成脚本
1.在生成脚本之前,我们需要将数据库的兼容级别设置成"SQL Server 2000 (80)"。该设置可以在数据库属性->Option->Compatibility level中设置
  2,选择数据库
  3,在选择脚本选项中,找到:为服务器版本编写脚本,后面选择SQL SERVER 2000...这一步最重要,否则会出错
  4,接下来就一步一步执行就OK了
三,将生成的SQL脚本复制到SQL2000的数据库中 的SQL查询分析器中执行..
  这样就将05数据库备份的数据库结构弄过来了..这里只是完成了一半.接下来更重要!
四,在SQL2000的数据库上右建-所有任务-导入数据
  1,选择数据源. 服务器就选择SQL2005的数据库服务器,数据库选择你要导入的05数据库中的数据库名
  2,选择目的.这里就是SQL2000数据库中要导入的数据库了
  3,接下来就是一步一步执行就OK了
到这里就算大功告成了..你成功了没?!
SQLServer2005中生成SQLServer2000的数据库脚本的时候出现这个错误:“ 目标服务器版本不支持该对象或不支持该对象的一个属性?”
---将触发器的状态置为False即可正常导出脚本(高版本的某些东西在低版本不支持)。
解决!
图文介绍:
在SQL2005附加过后的数据库,不能再被2000附加了
如果想还原到SQL2000,目前我用的方法是在sql 2005中生成数据库的脚本

步骤/方法


SQL2005备份如何在SQL2000上还原
如果是所有的数据请勾选:Script all objects in the selected database
SQL2005备份如何在SQL2000上还原




SQL2005备份如何在SQL2000上还原

注意事项

  • 注意生成的时候, 要选择生成sql 2000这个版本的脚本然后在2000中用这个脚本建立目标库,
    再用数据导入/导出工具或查询分析器,把数据从2005导到2000即可.
    关系图需要自己重新建立!
    《2005的数据库不能还原或附加到2000上,解决办法就是重新生成数据库及内部所有对象的脚本在2000中重建,然后将数据导入到2000中。》
    ---------------------------
    SQL2005转SQL2000的问题脚本:数据库进行降级处理。
    在生成脚本之前,我们需要将数据库的兼容级别设置成"SQL Server 2000 (80)"。该设置可以在数据库属性->Option->Compatibility level中设置
    方便的是SQL Server Management Studio自带的生成脚本功能。
    SQL Server Management Studio>>>任务>>>生成脚本
    如果选择生成sql2000版本的脚本,那么生成的脚本存在瑕疵,无法直接在sql2000中运行。
    可能会出现以下错误>>>
    错误一:WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    错误二:'sys.objects'
    错误三:列名 'object_id' 无效
    错误四:sys.views
    尝试打上 SQL2005的SP3 补丁后,上面的问题解决了,但还是存在问题。
    比如:[nvarchar](max) ,sql2000貌似不支持max参数的
    ---可采用以下~~
    1. 去掉 “WITH (IGNORE_DUP_KEY = OFF) ”
    2. 将所有的 “sys.objects”改为“sysobjects”
    3. 将所有的 “object_id” 改为 “id”
    4. (需要时)将所有的 “SCHAMA” 改为 “user”
    5. 如果有的系统函数名或系统存储过程名称前有“sys.”不能被SQL2000识别,就把它去掉。如添加注释“sys.sp_addextendedproperty”。
    警告: 已创建表 'xxxx',但其最大行大小(10438)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。----其中xxxx是你的建的表名,10438是你建表语句中可变长度列(如 nvarchar 或 varbinary)的总长度,8060是SQL Server对行长度的最大限制。
    、解决
    知道问题的原因了,解决办法相对就简单了!
    1、修改你建表语句中相应的列的数据类型或长度(如将nvarchar格式改成text),让可变长度列的加和小于8060。这样可以彻底避免出现上述错误发生,当然上述的错误并不是必然出现。