案例描述
昨晚踢球回來,接到電話說一個系統的幾個比較重要作業出錯,導致系統數據有些問題。讓我趕緊檢查看看。檢查作業日志時發現,作業報如下錯誤(關鍵信息用xxx替換)
The job failed. Unable to determine if the owner (xxxx\xxxx) of job xxxxx has server access (reason: Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5. [SQLSTATE 42000] (Error 15404)).
檢查告警郵件時,發現不止這個服務器的作業出現此類問題,而且發現有不少服務器都出現了此類錯誤。
案例分析
出現這個問題是因為這些服務器的SQL Server 服務啟動帳戶是用一個域賬號(暫且用域賬號A表示)啟動的,而這個域賬號A 居然被鎖了(后面聯系系統管理員檢查后確認的)。導致數據庫作業(作業的所有者(Job Owner)為域賬號B,我使用的數據庫管理員賬戶)出現上面錯誤。緊急情況是將作業的所有者改為sa,能保證作業運行不出錯。當然問題的根源還是域賬號被鎖引起權限問題。
案例延伸
今天還測試了一下,當域賬號被鎖的情況下,啟動SQL Server服務時,你會發現SQL Server服務啟動失敗,但是錯誤日志不會記錄任何日志信息,如果不知道原因,肯定會被這個給弄懵。因為服務啟動失敗,但是又沒有寫入任何錯誤信息。如何你遇到這個情況,最好檢查一下系統日志你應該會看到類似下面的錯誤信息。這樣方便你發現蛛絲馬跡!