SQLSERVER 運維日記-數據庫狀態

背景

新年伊始,小夥伴是否是還處於假期綜合症的狀態。咱們在平常運維數據庫的時候,會時常查看數據庫的狀態,檢查數據庫是否正常運行。對於這些狀態的熟悉對於咱們處理數據庫沒法訪問的數據庫

問題很是重要。當數據庫忽然變成一個你沒有見到過的狀態時,你就會很是慌亂,手足無措。這裏給小夥伴普及下數據庫的各個狀態。已經他們是怎麼轉換的運維

 

案例

 

前兩天在處理一個客戶問題,忽然某個數據庫沒法訪問了。數據庫下面的表也沒法查看。從SSMS界面上看數據庫是正常的狀態(就是數據庫名字後面沒有顯示特別的狀態)。查看ide

SYS.DATABASES 查看狀態列,發現是ONLINE。此時其餘數據庫是正常的,就這個庫有問題。確定是數據庫狀態不對。 那麼問題出在哪裏呢? 仔細觀察發現這個問題的數據庫 collation_name 是null 值。學習

原來問題在這,ui

剛剛聯機的數據庫不必定立刻能接受鏈接。 要肯定數據庫什麼時候能夠接受鏈接,能夠查詢 sys.databases 的 collation_name 列或 DATABASEPROPERTYEX 的 Collation 屬性。 在數據庫排序規則返回非 Null 值以後,數據庫就能夠接受鏈接了。spa

 

因而用命令把數據庫設置爲脫機,而後立刻聯機,再查看sys.databases 的 collation_name 列 變成了非null值。此時數據庫恢復正常。3d

 

 

狀態的轉換

數據庫有不少狀態。他們是如何在這些狀態之間進行切換的呢?下面這個圖很是清晰的標示了各個狀態的切換。在我剛學習數據庫的時候,這個圖給了我很大的幫助,日誌

讓我對數據庫各個狀態的轉換有了很清楚的認識。blog

 

 

ONLINE (在線) 排序

數據庫可正常運行

RESTORING (正在還原)

數據庫正在還原,當咱們還原數據庫使用NORECOVERY 模式時,數據庫就會變成該狀態

RECOVERING (正在恢復)

數據庫啓動,數據庫建立,ALTER ONLINE,RESTORE WITH RECOERY 時,會通過這個狀態,進行REDO,UNDO等操做。此時若是遇到問題就進入RECOVERY_PENDING。若是正常就會變成ONLINE。

RECOVERY_PENDING(等待恢復)

數據庫在還原時遇到跟資源相關的錯誤,代表還原進程被掛起,數據庫不能開始數據庫的數據和日誌的還原進程,這種狀況下,最可能的緣由是丟失數據文件或日誌文件。

SUSPECT  (置疑)

數據庫可能損壞了

EMERGENCY (緊急)

供DBA用來修復數據庫的狀態

OFFLINE (脫機)

離線狀態

 

總結

瞭解數據庫處於的狀態很是重要。咱們若是還不熟悉的小夥伴能夠看看。

相關文章
相關標籤/搜索