x64下odbc建立問題

今天在處理一個 odbc 建立在 x64 (64bit) server 2003 上的狀況, 狀況十分奇妙, 一般我們在設定 odbc 時, 是直接使用 [系統管理工具] 裡的 odbc 來進行設置, 當我設置好了之後, 有趣的事發生了, 居然透過 odbc 連接 db 的程式有個這樣的 exception:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

如此一來設置好的 odbc 就形同虛設, 查了半天也查不出原因, 後來在 google 上找到一篇 citrix 的 kb (link) 試了一下, 居然就好了, 可以找得到了, 仔細檢查一下原因, 整理如下:

在 x64 內透過 ui 建立的 odbc 是 64bit 的 odbc, 而原來執行的程式若是 32bit 的話, 是看不到這組 odbc 的, 也就是說 odbc 也是有區分 64bit / 32bit 的. 如何判斷原來 ui 上的 odbc 是 64bit 的呢, 我們看一下畫面截圖:

在Windows2003 64Bit下執行ASP.NET2.0應用程式

由於要測試 windows 2003 64bit OS 下的效能, 必須將 ASP.NET 2.0的應用程式部署上去.

但擔心會有相容性的問題, 於是開始找相關的資料. 其實也都沒有找到. 相關的資料僅有在 x64 上的 iis 若要跑 64bit 模式, 就一定得用 asp.net 2.0 才行, 若是 asp.net 1.1 的話, 就僅能跑在 32bit 模式下. 後來直接將 compile 好的 asp.net 2.0 程式, 部署上去在 x64 下的 iis, 結果可以順利執行, 真是方便, 沒有相容性的問題.

應該是 asp.net build 好的 msil code 並沒有含 32/64相依的程式碼, 而要到 runtime 時, 依 runtime 的環境, 來執行 msil code, 所以沒有相容性的問題. 至於為什麼 1.1 要在 32bit 模式下執行, 想必是因為在 x64 os 上, 並沒有 64bit 的 1.1 runtime isapi, 所以只能在 32bit 模式下執行囉.

以上是升級作業系統至 x64 時的一個小插曲, asp.net 2.0 是不會有什麼問題的啦…