none
升級Service Pack 2 + Hotfix之後,原先在Server上的VB 6程式會不定時當掉。 RRS feed

  • 問題

  • Dear, All:
    目前在我們公司有一個自動化系統程式是用VB6寫的,但是最近為了公司的系統安全政策,全部的Server做Service Pack2 + Hotfix,但是偶發性的會發生系統(自動化系統)會無法與機台連結的問題,本想說是我們程式的問題,或者是機台沒有丟訊息給我們,所以我們程式都當掉,但是我們查相關系統的log都是有丟訊息的,只是可能在某一時間點內就不會再互傳訊息,但是目前一直找不到相關解決方式,請問VB6是否與Windows XP Service Pack 2有什麼相衝嗎??還是我應該要從何DeBug呢?

    2007年3月25日 上午 03:14

解答

  • 只有這樣很難抓錯誤...

    建議你把發生問題的所有狀態都記錄下來,在跟當時相關的兩台電腦所有執行的程式進行比對,或許會有可過濾的資訊。


    比如說我其中一個經驗:

    原先系統是用 VB6 + ADO + SQL Server 2000

    Server 端升級到 SQL Server 2005 時還沒狀況,升級到 SQL Server 2005 SP1 時,偶爾會發生資料庫連線失敗,找不出原因,但是同時間有些新版的 VB2003 + ADO.NET 存取同一資料庫的程式,則都正常。

    有一次算是待命值班期間剛好跳出來,立刻線上檢查,最後發現是 ServerProtect 在每週定時深夜排程時[預設為低優先權],佔用大量 Server 硬碟頻寬,導致 SQL Server 2005 SP1 搶不到存取硬碟的狀況,無法執行 SQL 命令...

    改善的方式可以是:

    • 調開排程避免衝突。
    • 換高速的 SATA 硬碟。
    • 程式改用 VB2005 寫。
    • 降版回去用 SQL Server 2000 SP4 / SQL Server 2005,或升級到 SQL Server 2005 SP2。

    反正之後就沒這個問題了。所以有時候不單純只是程式撰寫問題,有時候是奇怪的問題。

    註:

    1. 詭異的是用 ADO.NET 存取不受影響,推測有可能是 ADO.NET 存取屬於 Offline ,ADO 屬於 Online ,造成資料庫鎖定方式不同,所以會跟 ServerProtect 排程掃描衝突,我也想過可能是資料庫檔案存取衝突,但是試過排程只掃描其他資料碟(非系統碟、亦非存放 SQL Server 資料檔的磁碟),一樣也會發生錯誤,所以只能暫時歸納為磁碟 IO 頻寬不足。

    2. 經查詢確認,Windows Server 2003 並沒有任何限制、管制磁碟 IO 頻寬的方式,僅有監控磁碟 IO 存取量的功能。

    2007年3月25日 上午 04:00
    版主