SQL Server 置疑、可疑、正在恢復(fù)等情況分析
更新時間:2011年12月19日 21:38:02 作者:
有些時候當(dāng)你重啟了數(shù)據(jù)庫服務(wù),會發(fā)現(xiàn)有些數(shù)據(jù)庫變成了正在恢復(fù)、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法
一、出錯情況
有些時候當(dāng)你重啟了數(shù)據(jù)庫服務(wù),會發(fā)現(xiàn)有些數(shù)據(jù)庫變成了正在恢復(fù)、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法。
在一次重啟數(shù)據(jù)庫服務(wù)后,數(shù)據(jù)庫顯示正在恢復(fù),過了很久還是這個狀態(tài),離線時間不能太長,所以就想起了一個方法,就是把數(shù)據(jù)庫服務(wù)停止了,把數(shù)據(jù)文件mdf和ldf拷貝出來,刪除了ldf文件,按照之前的經(jīng)驗,好像是在沒有l(wèi)df的情況下可以使用mdf來恢復(fù)數(shù)據(jù)庫。創(chuàng)建了一個同名的數(shù)據(jù)庫,停止數(shù)據(jù)庫服務(wù),覆蓋mdf文件,再啟動數(shù)據(jù)庫服務(wù),這個時候還是處于可疑的狀態(tài)。
其中使用mdf來附加數(shù)據(jù)庫是附加不了的,一直報錯。
二、解決步驟
方法一:使用腳本進行數(shù)據(jù)庫恢復(fù)。
--DataBaseName為修復(fù)的數(shù)據(jù)名
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
ALTER DATABASE [DataBaseName] SET EMERGENCY
GO
sp_dboption 'DataBaseName', 'single user', 'true'
GO
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
GO
ALTER DATABASE [DataBaseName] SET ONLINE
GO
sp_configure 'allow updates', 0 reconfigure with override
GO
sp_dboption 'DataBaseName', 'single user', 'false'
GO
SQL講解:
1) 使用指定值強制重新配置:(1、0表示為真假)
sp_configure 'allow updates', 1 reconfigure with override
2) 設(shè)置為緊急狀態(tài):
alter database DataBaseName set emergency
3) 設(shè)置為單用戶模式:
alter database [DataBaseName] set single_user
或者:Sp_dboption 'DataBaseName', 'single user', 'true'
4) 修復(fù)發(fā)現(xiàn)的錯誤:
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
5) 設(shè)置為聯(lián)機、在線:
ALTER DATABASE [DataBaseName] SET ONLINE
方法二:這個方法還沒嘗試過,大家可以試試看。
CREATE DATABASE DataBaseName
ON (FILENAME = 'D:\DataBase\Name.mdf')
FOR ATTACH_REBUILD_LOG ;
GO
有些時候當(dāng)你重啟了數(shù)據(jù)庫服務(wù),會發(fā)現(xiàn)有些數(shù)據(jù)庫變成了正在恢復(fù)、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法。
在一次重啟數(shù)據(jù)庫服務(wù)后,數(shù)據(jù)庫顯示正在恢復(fù),過了很久還是這個狀態(tài),離線時間不能太長,所以就想起了一個方法,就是把數(shù)據(jù)庫服務(wù)停止了,把數(shù)據(jù)文件mdf和ldf拷貝出來,刪除了ldf文件,按照之前的經(jīng)驗,好像是在沒有l(wèi)df的情況下可以使用mdf來恢復(fù)數(shù)據(jù)庫。創(chuàng)建了一個同名的數(shù)據(jù)庫,停止數(shù)據(jù)庫服務(wù),覆蓋mdf文件,再啟動數(shù)據(jù)庫服務(wù),這個時候還是處于可疑的狀態(tài)。
其中使用mdf來附加數(shù)據(jù)庫是附加不了的,一直報錯。
二、解決步驟
方法一:使用腳本進行數(shù)據(jù)庫恢復(fù)。
復(fù)制代碼 代碼如下:
--DataBaseName為修復(fù)的數(shù)據(jù)名
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
ALTER DATABASE [DataBaseName] SET EMERGENCY
GO
sp_dboption 'DataBaseName', 'single user', 'true'
GO
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
GO
ALTER DATABASE [DataBaseName] SET ONLINE
GO
sp_configure 'allow updates', 0 reconfigure with override
GO
sp_dboption 'DataBaseName', 'single user', 'false'
GO
SQL講解:
1) 使用指定值強制重新配置:(1、0表示為真假)
sp_configure 'allow updates', 1 reconfigure with override
2) 設(shè)置為緊急狀態(tài):
alter database DataBaseName set emergency
3) 設(shè)置為單用戶模式:
alter database [DataBaseName] set single_user
或者:Sp_dboption 'DataBaseName', 'single user', 'true'
4) 修復(fù)發(fā)現(xiàn)的錯誤:
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
5) 設(shè)置為聯(lián)機、在線:
ALTER DATABASE [DataBaseName] SET ONLINE
方法二:這個方法還沒嘗試過,大家可以試試看。
復(fù)制代碼 代碼如下:
CREATE DATABASE DataBaseName
ON (FILENAME = 'D:\DataBase\Name.mdf')
FOR ATTACH_REBUILD_LOG ;
GO
您可能感興趣的文章:
相關(guān)文章
SQL為什么不建議執(zhí)行超過3表以上的多表關(guān)聯(lián)查詢
mysql是往簡單化方向去設(shè)計的,如果多個表關(guān)聯(lián)查詢(超過3張表)效率上是比不上PG的,本文就詳細的介紹一下原因,感興趣的可以了解一下2022-03-03SQL Server 實現(xiàn)數(shù)字輔助表實例代碼
這篇文章主要介紹了SQL Server 實現(xiàn)數(shù)字輔助表的相關(guān)資料,并附實例代碼,需要的朋友可以參考下2016-10-10MSSQL轉(zhuǎn)MYSQL,gb2312轉(zhuǎn)utf-8無亂碼解決方法
MSSQL轉(zhuǎn)MYSQL,gb2312轉(zhuǎn)utf-8無亂碼解決方法,需要的朋友可以參考下。2010-06-06SQLserver2019?Express安裝及其一些問題解決
本文主要介紹了SQL?server?2019?Express?安裝及其一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04SQL SERVER 2012新增函數(shù)之字符串函數(shù)FORMAT詳解
這篇文章主要給大家介紹了關(guān)于SQL SERVER 2012新增函數(shù)之字符串函數(shù)FORMAT的相關(guān)資料,文中通過實例介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03sqlserver2005 行列轉(zhuǎn)換實現(xiàn)方法
sqlserver2005 行列轉(zhuǎn)換實現(xiàn)方法,需要的朋友可以參考下。2009-10-10