遇到一個詭異的SQL問題。

有一台SQL與Web同台的ASP網站系統(Windows 2000+SQL 2000),使用COM+ Application中的自製VB6資料庫存取元件,COM+ App以特定的使用者身份執行,今天在連接本機SQL時,出現"Cannot generate SSPI context"的錯誤訊息。

經驗中,這鐵定是使用NT整合式認證連線SQL資料庫失敗所致。再三檢查了COM+ Appliction的Identity身份設定,確認帳號密碼無誤。我還做了一個比對測試,用該帳號登入該台主機,只要將資料庫存取元件移出COM+ App,改以regsvr32直接註冊,存取資料庫就完全OK;但元件一移入COM+ Application中,就會出現無法產生SSPI Context的錯誤。

初步得到的結論: 帳號密碼是OK的,但元件被放入設定相同帳號/密碼的COM+ Application後就會產生錯誤。由於這台SQL+WEB本身也是AD,感覺上身份認證出現古怪問題的機率應該不高。

折騰了好一陣子才發現,今早為了系統測試的理由,將系統日期向前調整了一天,而只要將系統日期恢復,問題就消失了!!  系統時間不正常導致認證失敗非常合理,但為何DC+WEB+SQL都在同一台時還會產生時間不一致的認證問題就很難理解,而且此狀況又限定元件放在COM+ Application時才會發生,就更詭異了!

Google了一下,有幾篇(1, 2)文件也在談系統日期不正確導致SSPI Context無法產生的SQL問題,但多源於Client與SQL Server間的時間差,跟今天遇到狀況不盡相同。Anyway,下回再遇此一狀況時,記得優先Check一下是否跟系統時間有關。

又上了一課。


Comments

Be the first to post a comment

Post a comment