昨天下午5點多收到幾封告警郵件,我還沒有來得及看,GLE那邊的同事就電話過來,說數據庫出現告警了。讓我趕緊看看,案例具體信息如下所示:
告警郵件內容:
DATE/TIME: 2015/1/23 17:08:52
DESCRIPTION: The log for database 'ecmsDB' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
錯誤日志內容:
看着這個庫確實沒有多少印象,很奇怪的是每次事務日志備份時,都會看到“starting up datatbase"這類信息
“Starting up database 'ecmsDB'.”
日期 2015/1/23 17:03:44
日志 SQL Server (存檔編號1 - 2015/1/24 0:00:00)
源 spid116
消息
CHECKDB for database 'ecmsDB' finished without errors on 2015-01-23 00:00:16.247 (local time). This is an informational message only; no user action is required.
於是檢查一下該數據庫的一些基本信息,發現該數據庫被人啟動了”自動關閉“屬性,如下所示
SELECT name
,create_date
,compatibility_level
,collation_name
,is_auto_close_on
,is_cleanly_shutdown
FROM sys.databases WHERE name='ecmsDB'
數據庫的排序規則(collation_name )
作為數據庫中的默認排序規則。NULL = 數據庫沒有聯機,或 AUTO_CLOSE 設置為 ON 且數據庫已關閉。
- 自動關閉
-
指定在上一個用戶退出后,數據庫是否完全關閉並釋放資源。 可能的值包括 True 和 False。 如果設置為 True,則在上一個用戶注銷之后,數據庫會完全關閉並釋放其資源。
is_cleanly_shutdown
1 = 數據庫完全關閉;在啟動時不需要恢復
0 = 數據庫並未完全關閉;在啟動時需要恢復
分析與解決方法:
- 我將數據庫ecmsDB脫機,然后聯機后問題解決,檢查數據庫dbcc checkdb('ecmsDB')發現沒有什么問題,然后將“自動關閉”屬性設置為False,那么為什么會出現這個問題呢? 根據錯誤信息表示日志已損壞(log corruption). 我有點不得其解,沒有弄明白原因? 難道數據庫在“自動關閉”開啟后,遇到死鎖事務會造成這個錯誤?這會不會是一個bug來的呢?比較這種特殊案例是比較少見的。有兩個外國人遇到的案例情況跟我一致。如下所示
-
- https://dacosta9.wordpress.com/2014/06/26/sql-server-error-9001-severity-21-state-5-the-log-for-database-database_name-is-not-available-check-the-event-log-for-related-error-messages-resolve-any-errors-and-restart-the-database-e/
http://www.sqlservercentral.com/Forums/Topic1037190-1550-2.aspx
-
- 在微軟官方也看到有人提了這個bug,但是好像不了了之。


![clipboard[1] clipboard[1]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNTAxLzI0MTE0MTEzNjg4MTk0OC5wbmc=.png)
![clipboard[2] clipboard[2]](/image/aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvNzM1NDIvMjAxNTAxLzI0MTE0MTE3MDk0NzUyMi5wbmc=.png)