SQL2000不能还原数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL2000不能还原数据库相关的知识,希望对你有一定的参考价值。

我是用SQL来做游戏的数据库的..我在假设奇迹私服的时候假设失败(新手..没办法)是到最后一步失败的..打不开网站.其他一切正常.
后来想重新假设.我就把数据库删掉.再建再还原.但还原的时候出现一下提示:
MuOnline_Log'(2)和MuOnline_Data'(1)要求了文件'E:\游戏\游戏假设\MuOnline\DB'.WITH MOVE子句可用于重新定位一个或多个文件.
RESTORE DATABASE操作异常中止.
大家有什么解决办法吗?我重装SQL也不行.我用的是个人版的.也打过SP4补丁了..请大家救救我..谢了!
可以点图片放大看看..我重做系统..又重装SQL也是一样的提示..
不行的..不仅还原那两个数据库不行...我想还原其它数据库都是一样的提示..

1、看你的描述,你应该有一切正常但是网站打不开的时候的数据库备份吧,备份数据文件和日志文件。
2、重新安装数据库,新建一个和你想要的数据库同名的数据库,然后停止数据库服务。
3、把你备份的数据库文件和日志文件覆盖到新建的数据库文件和日志文件上,重启数据库服务,数据库就恢复了。

---
以上,希望对你有所帮助。
参考技术A 你不应该采取还原的办法

比较安全的保护数据的办法,采用附加和分离。

如果你有分离的数据库,附加一次
参考技术B 理论上说应该没有问题。因为2005的版本比2000的高。所以高版本还原成低版本的没有问题。 参考技术C 没听懂你说的假设是啥意思,不过给你个建议,就是还原数据库的时候名字需要相同,比如你的备份文件是a.bak,就新建一个数据库也叫a,然后在还原......

sql server 备份与恢复系列三 简单恢复模式下的备份与还原

原文:sql server 备份与恢复系列三 简单恢复模式下的备份与还原

一.概述

  前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原。在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重要,一般不建议使用这种模式。 例如对一个数据库有5次完整数据备份,时间是t5,  之后发生灾难,就会部丢失。

技术分享图片

  当数据库越来越大,完整备份时间会越来越长,为了减少丢失风险,引入差异备份。例如下图演示:在第一次建立数据库完整备份后,建立了三次差异备份,之后再建立完整备份,从而建立新的差异基准。不管是完整备份还是差异备份,一般只能在晚间进行。如果数据比较庞大又不允许长时间数据丢失,那简单恢复模式是不能满足的。

技术分享图片

二.备份演示

  在简单恢复模式下主要的备份是完整备份和差异备份。我这里有TestLog库,库里有二个表。假设周日做一次完整备份,周一到周六晚上每天做一次差异备份,到第二周的周日时开始新的基准线。如下所示

use test
exec sp_addumpdevice disk, BackupTestDevice,F:SqlServiceackupBackupTestBackup.bak

  技术分享图片

--设置恢复模式为简单恢复
 ALTER DATABASE TestLog SET RECOVERY simple
go
-- 做一次完整备份到备份设备中(备份基准) 假设在周日晚上 backup database TestLog to BackupTestDevice go

技术分享图片

go
--差异备份 周一晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周二晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周三晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周四晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周五晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周六晚
backup database TestLog to BackupTestDevice with differential 
go
--完整备份 周日晚(新基准)
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周一晚
backup database TestLog to BackupTestDevice with differential 

 在备份设备中查看备份集
  技术分享图片

-- 通过脚本查看

select distinct s.first_lsn,s.last_lsn,s.database_backup_lsn,s.position,
s.backup_finish_date,s.type,y.physical_device_name,s.backup_size
from msdb..backupset as s inner join
msdb..backupfile as f on f.backup_set_id=s.backup_set_id inner join
msdb..backupmediaset as m on s.media_set_id=m.media_set_id inner join
msdb..backupmediafamily as y on m.media_set_id=y.media_set_id
where s.database_name=‘TestLog‘
order by s.position asc

技术分享图片

 

三. 还原演示

   将一个数据库还原,需要构造一个正确的还原顺序。在还原过程中,备份文件结尾使用norecovery事务不恢复(正在还原。。)不可读写,在最后一个备份文件结尾使用recovery事务恢复。数据库恢复正常。

-- 切换到master库
use master
--设置单用户模式(否则执行下面报错:“因为数据库正在使用,所以无法获得对数据库的独占访问权”)
ALTER DATABASE TestLog SET OFFLINE WITH ROLLBACK IMMEDIATE
-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestLog from BackupTestDevice with file=1, norecovery 

  技术分享图片技术分享图片

-- 恢复到差异备份文件3,跳过差异备份2 ,看是否备份成功
restore database TestLog from BackupTestDevice  with file=3, recovery

  技术分享图片技术分享图片

-- 备份结束之后,结束单用户模式
ALTER  database  TestLog  set   online  

 下面在来演示还原差异文件,使用旧基准。还原看会怎么样

-- 从旧基准中恢复一个全备份 ,norecovery(正在还原...)不可读写. file是1
restore database TestLog from BackupTestDevice with file=1, norecovery 

--新基准file是8, 恢复到差异备份文件9 
restore database TestLog from BackupTestDevice  with file=9, recovery

技术分享图片

 

 总结:对于简单恢复模式,没有日志备份,恢复只需要一个完整数据库备份,以及最后一个差异备份。 对于多个差异备份文件,在还原时不需要LSN的连续性(在同一个基准内)。












以上是关于SQL2000不能还原数据库的主要内容,如果未能解决你的问题,请参考以下文章

SQLServer2000中 如何用sql脚本还原数据库

SQL Server还原数据库失败怎么办

MSSQL2000的BAT备份文件怎么恢复

如何用SQL语句 直接 备份,还原SQL 2000数据库

sql还原时出现3169错误

SQL Server 2000还原备份&附加mdf 提示检测到数据库一致性问题。