紧急求助:如何恢复此数据库?(十万火急!!!)
程序中用backup命令备份的SQL数据库,现在在Enterprise Manager中作恢复时报如下错误(以前恢复时正常),请问怎么解决?
The preceding restore operation did not specify WITH NORECOVERY or WITH STANDBY. Restart the restore sequence, specifying WITH NORECOVERY or WITH STANDBY for all but final step.
问题点数:100、回复次数:28Top
1 楼pbsql(风云)回复于 2002-03-11 18:07:27 得分 0
在线等候!UPTop
2 楼Eric2000(消灭小日本)回复于 2002-03-11 18:13:13 得分 0
SqlServer 几?
Top
3 楼zhanwei(@_@,初学.Net)回复于 2002-03-11 18:13:13 得分 0
GZTop
4 楼nana11(汉堡)回复于 2002-03-11 18:13:33 得分 0
restore 加上参数WITH NORECOVERY or WITH STANDBYTop
5 楼pbsql(风云)回复于 2002-03-11 18:17:50 得分 0
SqlServer 7.0
restore 加上参数WITH NORECOVERY or WITH STANDBY,我是在Enterprise Manager中作恢复操作,选什么?Top
6 楼pbsql(风云)回复于 2002-03-11 18:29:43 得分 0
执行命令:restore database ssnet from disk='E:\public\ss\ssnet.bak' WITH norecovery报同样的错:
Server: Msg 4306, Level 16, State 1, Line 1
The preceding restore operation did not specify WITH NORECOVERY or WITH STANDBY. Restart the restore sequence, specifying WITH NORECOVERY or WITH STANDBY for all but the final step.
Server: Msg 3013, Level 16, State 1, Line 1
Backup or restore operation terminating abnormally.
Top
7 楼ldy(罗大佑)回复于 2002-03-11 19:00:01 得分 80
看的帮助:
拷贝过来,看是否有帮助:
如何还原差异数据库备份 (Transact-SQL)
还原差异数据库备份
执行 RESTORE DATABASE 语句,同时指定 NORECOVERY 子句,以还原差异数据库备份之前的数据库备份。有关更多信息,请参阅如何还原数据库备份。
执行 RESTORE DATABASE 语句以还原差异数据库备份,同时指定:
差异数据库备份将应用到的数据库的名称。
要从其中还原差异数据库备份的备份设备。
NORECOVERY 子句,前提是在还原差异数据库备份后,还要应用事务日志备份,否则应指定 RECOVERY 子句。
示例
A. 还原数据库和差异数据库备份
下例还原 MyNwind 数据库的数据库和差异数据库备份。
-- Assume the database is lost at this point. Now restore the full
-- database. Specify the original full backup and NORECOVERY.
-- NORECOVERY allows subsequent restore operations to proceed.
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
GO
-- Now restore the differential database backup, the second backup on
-- the MyNwind_1 backup device.
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2,
RECOVERY
GO
B. 还原数据库、差异数据库以及事务日志备份
下例还原 MyNwind 数据库的数据库、差异数据库和事务日志备份。
-- Assume the database is lost at this point. Now restore the full
-- database. Specify the original full backup and NORECOVERY.
-- NORECOVERY allows subsequent restore operations to proceed.
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
GO
-- Now restore the differential database backup, the second backup on
-- the MyNwind_1 backup device.
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2,
NORECOVERY
GO
-- Now restore each transaction log backup created after
-- the differential database backup.
RESTORE LOG MyNwind
FROM MyNwind_log1
WITH NORECOVERY
GO
RESTORE LOG MyNwind
FROM MyNwind_log2
WITH RECOVERY
GO
如何建立、维护以及联机备用服务器 (Transact-SQL)
备用服务器的建立通常包括在主服务器上创建数据库备份和定期事务日志备份,然后按照顺序将这些备份应用到备用服务器。在还原操作之间,备用服务器保持只读状态。当需要使用备用服务器时,任何未完成的事务日志备份,包括来自主服务器的活动事务日志备份都将应用到备用服务器中,同时还要恢复数据库。
在主服务器上创建备份
执行 BACKUP DATABASE 语句以创建数据库备份。
执行 BACKUP LOG 语句以创建事务日志备份。
为每个希望随着时间的变化而创建的事务日志重复步骤 2。
建立和维护备用服务器
执行使用 STANDBY 子句的 RESTORE DATABASE 语句以便还原步骤 1 中在主服务器上创建的数据库备份。在回滚未提交事务影响的数据页之前,指定包含这些数据页内容的撤消文件名称。
执行使用 STANDBY 子句的 RESTORE LOG 语句以便应用步骤 2 中在主服务器上创建的每个事务日志。
为每个在主服务器上创建的事务日志重复步骤 2。
使备用服务器联机(主服务器发生故障)
执行使用 NO_TRUNCATE 子句的 BACKUP LOG 语句以备份当前活动的事务日志。当备用服务器联机时,这是将应用到备用服务器的最新事务日志备份。有关更多信息,请参阅如何创建当前活动事务日志的备份。
执行使用 STANDBY 子句的 RESTORE LOG 语句以便应用所有事务日志备份,包括步骤 1 中创建的仍未应用到备用服务器的活动事务日志备份。
执行 RESTORE DATABASE WITH RECOVERY 语句以恢复数据库并使备用服务器联机。
示例
下例在备用服务器上安装 MyNwind 数据库。在还原操作之间,可以只读模式使用数据库。
-- Restore the initial database backup on the standby server.
USE master
GO
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyNwind
FROM MyNwind_log1
WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyNwind
FROM MyNwind_log2
WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the
-- active transaction log on the primary server.
BACKUP LOG MyNwind
TO MyNwind_log3
WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyNwind
FROM MyNwind_log3
WITH STANDBY = 'c:\undo.ldf'
GO
-- Recover the database on the standby server,
-- making it available for normal operations.
RESTORE DATABASE MyNwind
WITH RECOVERY
GO
Top
8 楼pbsql(风云)回复于 2002-03-12 09:17:27 得分 0
ldy(罗大佑):谢谢!
现在是这样的,可以肯定以上问题是由差异备份引起的,可我现在手头只有ssnet.bak这个备份文件,怎么把它恢复?
执行命令:restore database ssnet from disk='E:\public\ss\ssnet.bak' WITH norecovery后报错:
Server: Msg 4306, Level 16, State 1, Line 1
The preceding restore operation did not specify WITH NORECOVERY or WITH STANDBY. Restart the restore sequence, specifying WITH NORECOVERY or WITH STANDBY for all but the final step.
Server: Msg 3013, Level 16, State 1, Line 1
Backup or restore operation terminating abnormally.
怎么解决?
高手快来,很急,谢谢!Top
9 楼pbsql(风云)回复于 2002-03-12 10:21:05 得分 0
程序中完全备份的语句如下:(sle_1.text为备份文件名)(程序第一次用完全备份备份数据库,以后就用差异备份)
ls_sql="backup database ssnet to disk='"+sle_1.text+"' with format,init,skip,nounload,stats=10"
execute immediate :ls_sql using ltr_trans;
差异备份的语句如下:
ls_sql="backup database ssnet to disk='"+ls_filename+"' with differential,format,init,skip,nounload,stats=10"
execute immediate :ls_sql using ltr_trans;
因为有多个客户端在运行这个程序,参数有错吗?
把这个备份的文件拷贝到其它机器(另外的服务器)能恢复这个数据库吗?Top
10 楼pbsql(风云)回复于 2002-03-14 18:32:24 得分 0
看看是什么东西,帖子的行距怎么突然变大了?CSDN的BUG?
大家帮帮忙,UPTop
11 楼ldy(罗大佑)回复于 2002-03-14 20:49:40 得分 0
帮你UP
Good Good Study
Day Day Up!Top
12 楼fzymr(风中游牧人)回复于 2002-03-14 21:29:17 得分 0
同病相怜,不过我是oracleTop
13 楼xjbs(大鱼)回复于 2002-03-14 21:33:30 得分 0
upupupupupTop
14 楼wonder01(一可)回复于 2002-03-15 08:55:59 得分 0
朋友
第一你要恢复一个已经存在的数据库时一定要选择强制覆盖
第二如果你是在单独恢复一个差异备份的数据库,一定要在一个等待还原状态的数据库基础上。
如果不能解决,我的email为:wonder@powerise.com.cnTop
15 楼pbsql(风云)回复于 2002-03-15 09:56:43 得分 0
wonder01(一可) :
第一,强制覆盖当然选择了
第二,一定要在一个等待还原状态的数据库基础上是什么意思?是不是要建一个空的数据库,也建了呀,没问题
还是恢复不成Top
16 楼yinpengxiang(鸿翔)回复于 2002-03-15 12:08:19 得分 0
查查你的SQL SERVER字符集相同么?Top
17 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2002-03-15 12:36:51 得分 10
我帮你问过竹之草了,他说恐怕不能恢复了!Top
18 楼pbsql(风云)回复于 2002-03-15 12:57:37 得分 0
yinpengxiang(鸿翔):与字符集有关么?原来完全备份的文件拿过来就可以直接恢复的
killerdanny(danny@转职中...月夜惊心):是什么原因不能恢复了?Top
19 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2002-03-15 13:17:31 得分 0
你把帖转到数据库中,让他们看看!Top
20 楼pbsql(风云)回复于 2002-03-15 13:38:15 得分 0
zhuzhichao及各位弟兄,帮帮忙了Top
21 楼liujianjun_(流星尔)回复于 2002-03-15 15:44:39 得分 0
我看用完全备份强制覆盖吧,总比没有强。Top
22 楼pbsql(风云)回复于 2002-03-19 11:09:40 得分 0
没辙了吗?再等等看Top
23 楼LiaoCheng(光辉岁月>>www.vod-online.net)回复于 2002-03-19 12:00:41 得分 0
拿到其它的机器上测试一下,是不是你的备份文件有问题
或是其它原因Top
24 楼pbsql(风云)回复于 2002-03-19 13:12:47 得分 0
备份文件没有问题(文件是好的),备份时也没有报错,拿到其它的机器上就是不能恢复Top
25 楼neutretto(立青)回复于 2002-03-19 14:23:42 得分 0
最好检查你的日志文件
看看你的备份顺序
Top
26 楼pbsql(风云)回复于 2002-03-19 18:25:10 得分 0
我就这一个备份文件Top
27 楼Haiwer(海阔天空)回复于 2002-03-20 09:17:04 得分 10
说说差异备份和还原的问题,在差异备份前应该有一次完全备份,也就是你上面所说的sle_1.text指定的文件名,只有能找到这个备份文件才能还原。
还原应该先恢复完全备份,再恢复差异备份,再恢复日志备份。
找不到完全备份文件就如zguzhicao说的不能恢复。
提个建议:
以后,完全备份也要定时,比如一星期一次,并保存好;增加日志备份。
Top
28 楼pbsql(风云)回复于 2002-03-20 10:48:59 得分 0
看来只能吸取教训了Top




