【茶包射手日記】以網域帳號執行服務在Win 2008自動啟動失敗

同事詢問: SQL 2008 R2安裝於Windows 2008 R2上,當SQL服務設定使用網域使用者帳號執行,啟動類型設為"自動",則在重開機時會出現以下錯誤,導致無法自動啟動:

SQL Server (MSSQLSERVER) 服務無法啟動,因為下列錯誤:
這個帳戶名稱不正確或不存在,或指定的帳戶名稱密碼不正確。

若將服務設定為"自動 (延遲開始)"[英文為Automatic (Delayed Start)],或改用本機帳號,則可避開上述問題。但同樣的設定,在Windows 2003 R2上則不會有錯。

由於近幾年OS、DB玩得不多,初步了解狀況後,當下立即決定"閃開! 讓專業的來"--發噗問問臥虎藏龍的噗友們。跟 hunterpo 來回交換了一些資訊,得到很多寶貴的情報!

經他在手邊環境實測,設定網域帳號 + 自動啟動並不會導致SQL Server啟動失敗,所以此問題應另有隱情。原本懷疑硬體規格、網路環境等因素導致系統中某些服務就緒時機不同,而SQL Server啟動時所依賴的某個服務(猜與網域身份認證有關)尚未準備好,因此無法完成網域帳號身份認證,導致啟動失敗。

後來hunterpo提到另一點,他發現先前提到的"自動 (延遲開始)"並不是【SQL組態管理員】(Sql Server Configuration Manager)的選項,懷疑是直接由服務管理介面設定的(犀利的射手推論),並建議由組態管理員統一設定較好。

將這個建議轉給同事後,不久就破案了!

原來故事是這樣的: 同事在設定網域帳號時,習慣用的是user @domain.com 格式,而SQL組態管理員則將其轉成domain\user格式,如此自動啟動便可順利完成。而若用服務管理員將其改回user @domain.com格式,就會再度引發自動啟動時帳號身份認證失敗,由此推論網域帳號的表示法是關鍵。

綜合以上的結果,我推測解析user @domain.com資料時需要額外服務,而此服務在"自動 (延遲開始)"啟動階段才會備妥,因而導致前述問題;而延遲開始是Vista/Win7/Win2008起加入的新特性,將一些啟動耗時且非立即必要的服務晚一點再啟動,以加快Windows開機速度,這或許解釋了Win2003與Win2008的測試結果不同。然而,這個神祕的服務究竟是什麼呢? 世界上只有三個人知道,一個是我,一個是寫服務的人,還有一個人我不能說... (其實是我不知道啦! 若未來搞清楚會向大家公佈)

PS: 嚴格說起來,今天我扮演的不是射手,而是茶包皮條客貿易商的角色,但仍然不減射茶包的樂趣,在此感謝hunterpo提供資訊與建議。

歡迎推文分享:
Published 23 August 2010 05:03 PM 由 Jeffrey
Views: 9,854



意見

# alex said on 25 August, 2010 01:40 PM

haha, 有趣. 真沒有想到 user @domain.com 跟 domain\user 是有影響的

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<August 2010>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication