2012-03-09 71 views
0

我正在使用DAO訪問SQL Server的應用程序的更新。我知道,但現在讓我們考慮一下DAO的需求。網絡重新連接後SQL-Server連接失敗

應用程序一直在系統托盤中運行,並定期執行SQL服務器操作。由於它一直在運行,並且應用程序的用戶將在筆記本電腦上並在建築物之間轉換,我已將其設計爲在活動狀態和非活動狀態之間悄悄轉換。當數據庫連接成功時恢復運行。

我有一個最後一個問題,我釋放此更新之前:當連接被刪除,然後重新建立,SQL操作失敗。只有在我的連接字符串中指定了主機名時,纔會發生這種情況。如果我使用IP,一切都很好(但我需要能夠使用主機名)。

這裏是行爲:

1)一切工作。良好的網絡連接,數據庫操作都很好。

2)連接丟失。任務欄圖標上出現小'x',沒有其他東西。一切都好。

3)重新連接。

在第3步,當我運行第一個查詢時,出現'ODBC - 調用失敗'錯誤。有趣的是,數據庫首先打開時沒有錯誤。

如果我跳過第1步,並在連接斷開時啓動應用程序,則在步驟3(主機名或不是)中,一切工作正常。

我希望這是DAO引擎在第一次連接後緩存DNS條目的問題,儘管目標IP不會改變,所以我不確定這一點。我試圖刷新窗口的DNS緩存(從cmd提示符)不起作用。甚至當我使用本地主機名與本地SQL服務器進行開發時,也會發生相同的行爲。 127.0.0.1沒有問題。

我也嘗試CoUninitialize()活動時間之間的DAO接口,但我有麻煩讓這個工作。如果有人認爲這會有所幫助,我會加倍努力。

此行爲是在Windows XP或任何東西一樣7.你有

謝謝!

編輯:我應該提到 - 我關閉嘗試之間的數據庫連接,然後用

m_pDb = m_pDaoEngine->OpenDatabase() 

回答

0

最後我咬咬牙,將應用程序ADO重新打開它。現在一切正常,數據庫操作啓動速度更快。