Sql2000上的数据库备份后,拿去Sql2005去恢复,提示出错?微软连这个都不兼容吗,应该不会吧?

Name 2008-02-22 06:10:25
1)、sql2000上有个数据库,
先备份成一个tester20080222.bak的文件;

因为公司要换2005。
2)、所以,再在sql2005上先建一个数据库,同名并且数据库文件放在同一个路径下;
3)、建完毕后,把tester20080222.bak拷贝过来,并在sql2005上恢复,但是提示出错:
错误信息:you must select a restore source
(我已经选中并添加这个文件了!)

请问大家,谁遇到过这种情况,有没有办法解决?

microsoft应该不会这个都不兼容吧,难道要一个表一个表的建好,再把数据转过来??
...全文
821 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chucan001 2010-08-21
我是要从sql2000备份的还原到sql2008 也是不行,报错,【对象不能从 DBNull 转换为其他类型。 (mscorlib)】
回复
小火龙果 2010-07-09
我也遇到这个问题了 太郁闷了
在“将数据库文件还原为”的*.mdf和*.ldf时候我选的是所有格式 恢复总是失败
然后我恢复05备份的数据库就能成功了 气死我了 有没有什么解决的方法啊
回复
Name 2008-02-26
揭帖,谢谢各位英雄!
回复
jgchenhunter 2008-02-24
1、确认备份文件是不是完全备份文件,并保证文件没有问题.
2、选择正确的恢复路径,保证路径存在
3、选项中选择覆盖原来数据库
4、然后开始恢复


应该没有什么问题,我试过,应该是你操作的问题,详细的在试一遍
回复
fstao 2008-02-24
用2000的数据库在2005还原是没有问题的。具体是这样做:
1、还原时,有两个选择一个是数据库还原,另一个是文件还原,选择数据库还原
2、在还原的选项里,应把“覆盖现有的数据库”打上勾
3、要注意在“将数据库文件还原为”的*.mdf和*.ldf的文件名字要和创建数据库的文件一致
回复
Name 2008-02-24
谢谢各位,

俺这个帖子害得大家星期天都不能休息,罪过罪过!!

明天回公司试,完了以后就揭帖!!

回复
victorcai2006 2008-02-24
MARK,帮顶
回复
viva369 2008-02-23
楼主你不会是犯这种低级错误吧!

选择源设备后,需要将下面的列表中的CheckBox勾上
回复
Name 2008-02-23
潇洒老乌龟(爱新觉罗.毓华),
多谢你的指导。
回复
Name 2008-02-23
不用先建库,
直接用复制文件附加~~~~
------
这个我知道,谢谢,
回复
w2jc 2008-02-23
LZ的情况应该就是路径上的问题。提示信息里面说得很清楚了。
使用分离附加的确比较简单一些。

另,升级到2005之后,默认的数据库兼容级别还是2000,
这个时候数据库的模式还是2000的,只是运行在2005的服务器里面。
建议把兼容级别升到2005,做一些测试以确认是完全没有问题的。

到数据库属性里面,“高级”页,里面有个兼容性选项,选“90”。
回复
laker_914 2008-02-22
我一直用Sql Server 2000的數據庫還原到SQL SERVER2005上啊,沒出現這樣的情況呢!
回复
中国风 2008-02-22
不用先建库,
直接用复制文件附加~~~~
回复
dawugui 2008-02-22
升级到SQL Server 2005的常见问题解答
http://database.ctocio.com.cn/tips/314/7573314.shtml
回复
dawugui 2008-02-22
还要升级存储过程

在SQL Server 2005中升级存储过程

作者:Serdar Yegulalp 2007-05-29

《SQL Server 2005的变化》一文中揭示了SQL Server 2005的变化如何打破了旧有的应用程序和数据库,特别是使用被抛弃的函数的地方。现在我将要讨论的是如何在你的移植过的数据库里面使用存储过程来充分利用这个SQL Server2005中的新函数,而不需要打破现有的功能性。

我们假设你有一个前端的应用程序,是由不同的团队来分别写入或者管理,并且它不像后台数据库那样频繁更新。你想要在SQL Server应用程序的存储过程中进行修改以充分利用新的功能。你还想要这个过程尽量温和,这样数据库和前端应用程序就都不会突然崩溃。

例如,你想要更新存储过程来使用SQL Server 2005的T-SQL中一些新的功能,例如TRY and CATCH函数,这个函数可以让复杂的错误追踪变得简单一点。你通常会拷贝现有的存储过程到一个新的并行的存储过程里面去,然后对它进行更新,使用新的功能,然后或者在经过修改的前端应用程序版本,或者查询分析器中测试两方面的行为。

当你很自信新的存储过程的行为是正确的,并且它也准备好用在产品中,你就可以无缝的替换它,例如通过修改两个存储过程的名字,或者通过代码的拷贝。我个人倾向于修改名字,因为这可以让你对原有的代码做个备份——像你的数据库中的其它东西一样,做个备份,以防出现不可预期的问题。

这是相对标准的技术,但是我曾见过的更有意思的一个问题涉及了可选参数传递:

CREATE PROCEDURE my_procedure
{其它的参数在这里},
@optionalparameter Boolean=FALSE
AS
If @optionalparameter=TRUE
Begin
{带有SQL Server 2005-特定命令的新版本的存储过程放在这里}
End
Else
Begin
{旧版本的存储过程放在这里}
End

还有另外一种有用的方式来选择性的测试代码。现有的前端对存储过程的呼叫不会使用可选参数,还会执行原来的代码。你可以在这里使用新的前端代码来测试存储过程,然后优雅地更新对现有存储过程的参考。因为参数是可选的,所有现有的对存储过程的呼叫(例如那些没有参数的呼叫)都会像以前一样准确地传递过去。

如果你不能添加新的存储过程,但是可以修改现有的存储过程的话,还有一种在这种限制下的好办法。当没有保留历史遗留代码的时候,你可以在存储过程中逐步淘汰IF。最后,在存储过程和你的前端代码中逐渐放弃可选参数。

1
回复
-狙击手- 2008-02-22
1、确认是不是完全备份
2、理论上应该可以在05上恢复
3、检查 选项:
选择正确的恢复路径
选项中选择覆盖原来数据库
回复
Name 2008-02-22
这个是可以啊,

但是,假如我要给分公司或者客户数据的时候总不能老让别人去附加吧?!

这也太不智能了。
回复
-狙击手- 2008-02-22
直接附加系统能自动升级到05
回复
Name 2008-02-22
刚才试了一下1楼的方法,可行!

但是,不知道是不是真的必须用Attach的方法,?

如果真是这样,那么microsoft可就不应该了,毕竟交流数据库数据通过这种方式?!


先不揭帖,期待更好的方法。。。。
回复
bayes310 2008-02-22
我也遇到过类似的情况,第一次备份恢复完全没有问题,可是第二次的时候就是出现了问题...
至今还没弄明白是怎么回事,也没有相关的文档可以解释的
回复
加载更多回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-02-22 06:10
社区公告
暂无公告