2014-05-02 104 views
0

我有兩個不同的C++ ISAPI DLL,已經設置和配置IIS 7用作Web應用程序。他們使用在不同域用戶帳戶下運行的不同應用程序池進行設置。我遇到的問題是,一旦某個應用程序連接到SQL,另一個應用程序就無法連接。代碼在應用程序如何建立連接之間沒有區別 - 它們都使用相同的參數調用相同的靜態庫方法。獲得第二個應用程序連接到SQL的唯一方法是將其應用程序池用戶設置爲與第一個應用程序相同的域用戶,反之亦然(這排除了一個用戶權限不足)。我重複檢查了SQL驅動程序的ODBC連接池已打開,並且我監視了ODBC數據源管理員跟蹤日誌。如果我在兩個應用程序池在不同用戶下運行時監視跟蹤日誌,則SQLAllocHandle已成功顯示,以便在跟蹤中進入和退出,但SQLDriverConnect只會成功調用第一個應用程序時進入和退出。當第二個應用程序使用完全相同的參數調用SQLDriverConnect時,跟蹤僅顯示輸入,調試日誌也指示此函數調用永不返回。數據包跟蹤表明第二個應用程序甚至不會嘗試連接到SQL服務器。但是,第一個應用程序將連接正常,並且在SQL中運行一個分析器將顯示適當的SQL語句執行。這些應用程序在IIS 6和Windows XP驅動程序的舊版本的Windows 2003 x86上使用相同的多用戶配置運行得很好。ODBC SQL驅動程序鎖定到單用戶在Windows 2008 x64

我希望有一個簡單的ODBC設置,我錯過了,但我的搜索出現空。任何人可以提供幫助將不勝感激,在此先感謝。

回答

0

經過一個多星期的故障排除和與Microsoft的交流,我們終於找到了解決方案。根據微軟告訴我們的情況,他們改變了流程在2003年到2008年間互相交互的方式,並使用我們的靜態鏈接庫,就像我們在不同用戶下運行時導致的鎖定問題一樣。當我們在調用ODBC連接器之前引入一個新線程時,一切正常。

相關問題