嘗試數據庫被標記為RESTORING的處理方式
嘗試數據庫被標記為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
數據庫正常。後續將嘗試數據庫處於置疑等狀態時,數據庫的修復方式。
原文出處:尝试数据库被标记为RESTORING的处理方式 - CSDN博客