尝试数据库被标记为RESTORING的处理方式

it2025-08-17  6

尝试数据库被标记为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数据库正常。后续将尝试数据库处于置疑等状态时,数据库的修复方式。

最新回复(0)