據庫被標記為RESTORING的處理方式
轉自:http://limindo.blog.163.com/blog/static/264758562010116115412141/
嘗試數據庫被標記為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 )
據庫被標記為RESTORING的處理方式