about 6 years ago

最近公司內部在升級伺服器環境,有客戶反映部分的功能無法使用

將錯誤訊息解開,是COM+ 回傳的 "使用者 XXX登入失敗"

這實在是非常令人匪夷所思的問題,之前都是正常的,且沒有更新COM+照理來說沒問題才是

測試了傳遞參數等等方向我還是不認為是我COM+的問題

但看來確實就是在

Set Conn = CreateObject("ADODB.Connection")

Conn.open conn_str '這次的執行是成功的

...

'Return 之後
使用另外一個接受傳遞的Connection 去執行 Conn.open

就會發生登入失敗的錯誤

我只能推測如果我傳遞的參數沒有錯,那想必這個參數在這裡就是遺漏或者真的連線失敗
使用ODBC去測試連線,真的是可以連線,重新撰寫一隻程式,也是可以運作

所以我證實了參數遺漏的可能性...
我想起在寫.net 時SQL connection 中有一個參數 "Persist Security Info "
是負責處理,當再次連線時,是否要保留密碼資訊(敏感資料),但是原本都無須設定阿
(參考網路多篇文章的說明,有人說是SQL Sever 的版本,有人說是預設就是False)
但只剩下這個方法,試試看也無訪

因此在SQL的連線字串中加入Persist Security Info=True

conn_str = "Initial Catalog=DBName ; Persist Security Info=True;....."
'Persist Security Info=True

這樣設定後當然也就能使用了,但我仍然較為迷惑的,確實還是在於為何原先的WinServer 2003 升級到 2012後

就會發生這樣的狀況...我只能認為是因為ADO Object 的版本,除此之外我想不到理由

若有相同狀況,可以往這個方向試試看~

← Eclipse Adb 錯誤 C# RegistryKey 找不到子機碼 →
 
comments powered by Disqus