据库被标记为RESTORING的处理方式,正在还原中,正在恢复
关键词:正在还原,正在恢复,restoring,RECOVERING
转自:http://limindo.blog.163.com/blog/static/264758562010116115412141/
二、这个显示是指:正在还原中..
如果确定还原完毕,可以用
SQL code
restore database 数据库A with recovery
或者:
RESTORE DATABASE db FROM DISK='c:\1.bak' (WITH RECOVERY )
尝试数据库被标记为RESTORING的处理方式
/****
by select left('claro',2),in 西安,2009-03-27 00:29:23.450
Microsoft SQL Server 2005 - 9.00.1406.00
(Intel X86)
Mar 3 2007 18:40:02
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
****/
USE [master]
GO
-->1.查询数据库状态
select state_desc,name,user_access_desc from sys.databases where name='db'
--state_desc name user_access_desc
--RESTORING Db MULTI_USER
-->2.修改数据库状态
ALTER DATABASE [Db] SET ONLINE
--消息5052,级别16,状态1,第1 行
--当数据库处于Restoring 状态时,不允许ALTER DATABASE。
--消息5069,级别16,状态1,第1 行
--ALTER DATABASE 语句失败。
-->3.设置数据库状态为紧急恢复模式
ALTER DATABASE [Db] SET EMERGENCY
--消息5052,级别16,状态1,第1 行
--当数据库处于Restoring 状态时,不允许ALTER DATABASE。
--消息5069,级别16,状态1,第1 行
--ALTER DATABASE 语句失败。
-->4.设置数据库状态为单用户模式
ALTER DATABASE [Db] SET SINGLE_USER
--消息5052,级别16,状态1,第1 行
--当数据库处于Restoring 状态时,不允许ALTER DATABASE。
--消息5069,级别16,状态1,第1 行
--ALTER DATABASE 语句失败。
-->5.CHECKDB检查
DBCC CHECKDB (db,REPAIR_ALLOW_DATA_LOSS)
--消息927,级别14,状态2,第1 行
--无法打开数据库'Db'。该数据库正在进行还原。
-->6.尝试用备份集继续还原
RESTORE DATABASE [Db] FROM DISK = N'c:db.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
--已处理百分之13。
--已处理百分之22。
--已处理百分之31。
--已处理百分之40。
--已处理百分之54。
--已处理百分之63。
--已处理百分之72。
--已处理百分之81。
--已处理百分之90。
--已处理百分之100。
--已为数据库'Db',文件'Db' (位于文件1 上)处理了176 页。
--已为数据库'Db',文件'Db_log' (位于文件1 上)处理了2 页。
--RESTORE DATABASE 成功处理了178 页,花费0.159 秒(9.125 MB/秒)。
-->7.检查数据库状态
select state_desc,name,user_access_desc from sys.databases where name='db'
--state_desc name user_access_desc
--ONLINE Db MULTI_USER
--至此db数据库正常。后续将尝试数据库处于置疑等状态时,数据库的修复方式。
======================================================================================================
其他方法:
这个显示是指:正在还原中..
如果确定还原完毕,可以用
SQL code
restore database 数据库A with recovery
或者:
RESTORE DATABASE db FROM DISK='c:\1.bak' (WITH RECOVERY )