Dot-Net

Win 2003 上的 DB2 Client v9.5 需要很長時間才能建立連接

  • July 23, 2011

我有一個在 Windows 2003 上執行的 ASP.NET 應用程序,它需要與駐留在大型機上的 DB2 數據庫進行通信。我們在伺服器上安裝了 DB2 Client 驅動程序 v9.5,以便應用程序可以執行連接並使用數據庫。連接到數據庫的連接字元串包含使用者名和密碼,它不是可信連接。

需要明確的是,我們使用的是 DB2 .NET 提供程序,而不是 OLE DB、ODBC 等。

我們注意到的是,當 ASP.NET 應用程序嘗試與 DB2 建立第一個連接時,需要很長時間,大約 20 秒。在與我們的一位常駐 DBA 交談後,他們說這可能是因為 DB2 驅動程序正試圖針對 Active Directory 對用於連接數據庫的使用者帳戶進行身份驗證。

他們對此的解決方案是在 Win2003 伺服器上創建一個本地使用者帳戶,其名稱與用於建立連接的使用者帳戶名稱相同。本地使用者帳戶不必是任何 acl 組的成員,它可以被禁用。

我嘗試了這個解決方案,令我驚訝的是,它確實有效。連接是在幾毫秒內完成的。我擔心的是這個“特性”似乎是 DB2 驅動程序中的一個缺陷,而且這個驅動程序的任何新版本實際上都可能阻止它再次工作。

有誰知道 DB2 驅動程序中是否有我們可以設置的實際設置,因此它不會嘗試使用 Active Directory 進行身份驗證?使用該設置,而不是依賴在我看來,他們的身份驗證算法中的缺陷,我會感覺更自在。

謝謝

在 db2 客戶端配置設置中,有用於身份驗證的伺服器選項。選項的描述令人困惑。預設值為“在伺服器 dbm 配置中使用身份驗證定義”。在客戶端上,“servers dbm config”實際上是指本地機器。如果您的本地電腦是 microsoft windows,則連接將嘗試使用預設身份驗證方法來驗證 ID。如果預設是活動目錄,那麼事情會變得非常緩慢。一旦它從 Windows 獲得返回(好或壞),它將嘗試使用 id/passwd 連接到 db2。這就是為什麼您的 DBA 說要使用“使用伺服器身份驗證”對連接進行編目。混音也有bug。如果您使用 odbc,它可能會嘗試轉到域控制器並修復需要本地 id 的問題。

引用自:https://serverfault.com/questions/53971