標籤:
一個SQLSERVER資料庫會處於很多種狀態,例如 ONLINE 、OFFLINE,RESTORING 、RECOVERING 、RECOVERY_PENDING 、SUSPECT、EMERGENCY 。
只有在ONLINE的狀態下,資料庫才能被正常訪問。
可以利用下面的語句來查看它的狀態
select name,state_desc from sys.databases
1.ONLINE
只有在ONLINE的狀態下,資料庫才能被正常訪問
2.OFFLINE
我們可以在Microsoft SQL Server Management中看到該資料庫,但該資料庫名稱旁邊有"離線"的字樣,說明該資料庫現在雖然存在於資料庫引擎執行個體中,但是不可以執行任何有效資料操作,比如新增,修改,刪除等,這就是離線狀態。(這個時候,你就可以直接拷貝源檔案了,也就會說最原始的備份方法)
但是:
無法覆蓋檔案 ‘F:\TEST\SHOP.MDF‘。資料庫 ‘SHOP‘ 正在使用該檔案。
你依然無法....
3.RESTORING
由於SQLSERVER LAZY WRITE和CHECKPOINT的作用,硬碟上存在一些未提交的資料,如果資料庫在這種時候被關閉,下次SQLSERVER重新開啟資料庫的時候,為了維護資料庫的一致性,SQLSERVER一律復原,以保證資料庫事務的一致性(undo/rollback),對於那些已經提交的事務,暫時存在記憶體中,未寫入到磁碟中的,一律redo,在undo和redo的過程叫做資料庫恢複。只有經過恢複的資料庫,才能保證是一個“一致的”資料庫,才能被安全地訪問。
4.RECOVERY_PENDING
如果資料庫在做恢複的時候不能正常開啟所有的資料庫檔案,資料庫會進入RECOVERY PENDING狀態。在這個狀態下管理員有兩種選擇,
a.要不用ALTER ONLINE命令使SQLSERVER做一次上線,
b.要不就只能放棄當前資料庫,還原備份。
5.SUSPECT
我們可以在Microsoft SQL Server Management中看到該資料庫,但該資料庫名稱旁邊有"可疑"的字樣,這說明至少主檔案組可疑或可能已損壞
對於質疑的解決方案:http://www.jb51.net/article/23363.htm
6.EMERGENCY
資料庫標記為 READ_ONLY,已禁用日誌記錄,並且僅限 sysadmin 固定伺服器角色的成員進行訪問。EMERGENCY 主要用於故障排除。 例如,可以將由於損壞了記錄檔而標記為可疑的資料庫設定為 EMERGENCY 狀態。 這樣,系統管理員便可對資料庫進行唯讀訪問。 只有 sysadmin 固定伺服器角色的成員才可以將資料庫設定為 EMERGENCY 狀態。
T-SQL 陳述式來切換他們的狀態
ALTER DATABASE DATABASE_NAME SET ONLINE | OFFLINE |EMERGENCY
SQLSERVER資料庫主要狀態