程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL Server 置疑、可疑、正在恢復等情況分析

SQL Server 置疑、可疑、正在恢復等情況分析

編輯:更多數據庫知識

一、出錯情況
有些時候當你重啟了數據庫服務,會發現有些數據庫變成了正在恢復、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法。
在一次重啟數據庫服務後,數據庫顯示正在恢復,過了很久還是這個狀態,離線時間不能太長,所以就想起了一個方法,就是把數據庫服務停止了,把數據文件mdf和ldf拷貝出來,刪除了ldf文件,按照之前的經驗,好像是在沒有ldf的情況下可以使用mdf來恢復數據庫。創建了一個同名的數據庫,停止數據庫服務,覆蓋mdf文件,再啟動數據庫服務,這個時候還是處於可疑的狀態。
其中使用mdf來附加數據庫是附加不了的,一直報錯。

二、解決步驟

方法一:使用腳本進行數據庫恢復。
復制代碼 代碼如下:
--DataBaseName為修復的數據名
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) 設置為緊急狀態:
alter database DataBaseName set emergency
3) 設置為單用戶模式:
alter database [DataBaseName] set single_user
或者:Sp_dboption 'DataBaseName', 'single user', 'true'
4) 修復發現的錯誤:
DBCC CHECKDB('DataBaseName','REPAIR_ALLOW_DATA_LOSS')
5) 設置為聯機、在線:
ALTER DATABASE [DataBaseName] SET ONLINE

方法二:這個方法還沒嘗試過,大家可以試試看。

復制代碼 代碼如下:
CREATE DATABASE DataBaseName
ON (FILENAME = 'D:\DataBase\Name.mdf')
FOR ATTACH_REBUILD_LOG ;
GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved