none
請問要如何用ASP透過網路磁碟機去連接DBF資料庫? RRS feed

  • 問題

  • 情況如下:

    總共有三台伺服器主機

    一台是網站主機(位於公司外部)

    一台是中繼主機(位於公司內部)

    一台是DBF資料庫主機(位於公司內部)

    在網站主機上會有一個查詢頁面提供客戶查資料,基於資料安全的關係,會先將網站頁面所要查詢的條件值用XML傳回到公司內部的中繼主機上,然後在中繼主機會透過網路磁碟機(Z:\)的方式,利用ASP程式負責傳接值及開啟DBF資料庫做資料查詢的動作。

    現在的問題是,ASP程式要開啟資料庫時,都會出現找不到資料表(一樣的程式如果放到資料庫主機上去執行是正常的),除了中繼主機和資料庫主機分別是兩台機器外,也分別位於不同的網段(中繼主機:192.168.1.1;資料庫主機:192.168.2.1)。

    後來也有到網路上去搜尋關於ASP程式透過網路磁碟機開啟DBF資料庫的問題,其中有找到是和權限有關,但相關的權限都已經設定了(例如:中繼主機和資料庫主機要新建一樣的帳號以及要將所新建的帳號加入到GUEST的群組內),卻仍然無法開啟資料庫,所以在此要請版上各位先進幫忙,關於這個問題我應該如何解決?

    謝謝

    以下是中繼主機開啟資料庫的ASP程式

    <%

    Set ConnDBF = Server.CreateObject("ADODB.Connection")

    ConnStr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=Z:\dbf;Exclusive=No;"

    ConnDBF.Open ConnStr

     

    SqlDBF = "Select Top 10 * From cidtable Order by cid"

    Set rs_dbf = ConnDBF.Execute(SqlDBF)

     

    Do While Not rs_dbf.EOF

    Response.Write "cid=" & rs_dbf("cid") & "<br>"

    rs_dbf.MoveNext

    Loop

    %>

    以下是所出現的錯誤訊息

    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e37'

    [Microsoft][ODBC Visual FoxPro Driver]File 'cidtable.dbf' does not exist.

    /ciddbf.asp, 列8

    2010年10月29日 上午 09:48

解答

  • 改用 UNC 路徑,不要用網路磁碟。

    MSDN / Microsoft KB 上面有記載:IIS 基於安全考量,不允許存取網路磁碟。

    不過 UNC 路徑比較難設...

    另外,dbf 是檔案型資料庫,透過網路效能很差... 用 vfp driver 還好,用 dbaseIV driver 只能有一個 client ... 除了 windows 應用程式外,基本上我建議直接匯出到其他資料庫比較快...


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月29日 下午 03:38

所有回覆

  • 試試看 以虛擬目錄 的方式 是否可行
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年10月29日 下午 12:35
  • 改用 UNC 路徑,不要用網路磁碟。

    MSDN / Microsoft KB 上面有記載:IIS 基於安全考量,不允許存取網路磁碟。

    不過 UNC 路徑比較難設...

    另外,dbf 是檔案型資料庫,透過網路效能很差... 用 vfp driver 還好,用 dbaseIV driver 只能有一個 client ... 除了 windows 應用程式外,基本上我建議直接匯出到其他資料庫比較快...


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月29日 下午 03:38
  • asp程式運行的預設帳號會是IIS_XXX(如果是匿名驗證情況下),所以需要存取跨Server的網路磁碟請依下列步驟設定

    1.IIS必須是匿名驗證
    2.在雙方電腦都建立一個帳號密碼相同之Account(如果是AD架構,則建立一個DomainUser),讓此帳號允續存取網路磁碟.
    3.在IIS設定匿名的帳號為此帳號

    已上為IIs6之前的做法

    而IIs7之後作法為建立一個新的application pool,設定此application pool之運行帳號為上述的帳號.指定應用程式使用此application pool

    2010年11月1日 上午 12:09
  • 感謝三位先進所提供的解決方法

    因為這樣的作法是要做商業用途

    所以就即時性以及效能來看

    還是會以心冷大大所提出的將DBF匯到其他資料庫讀取為優先考量

    謝謝

    2010年11月1日 上午 01:55