2008-12-04 30 views
0

我在訪問位於遠程服務器上的數據庫時遇到問題。如何通過指向遠程共享的虛擬文件夾訪問數據庫

我有一個ASP.NET 2.0的網頁正在試圖連接到一個數據庫。
數據庫通過虛擬文件夾(我在IIS中設置)訪問。
虛擬文件夾指向包含數據庫的遠程共享。

虛擬文件夾(在網絡應用程序的根目錄)在一個共享的遠程服務器上通過UNC路徑指向:

\\databaseServerName\databaseFolder$\ 

虛擬文件夾已「讀」和「瀏覽」設置爲權限'真正'。

我的連接字符串存儲在 '的appSettings' web.config中的部分:

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/> 

連接對象是我的.aspx頁面上declard:

Dim objConnVirtual As New OleDbConnection(ConfigurationManager.AppSettings("conStrVirtual")) 

下面是代碼試圖使用連接對象:

Public Sub Test() 
    If objConnVirtual.State <> ConnectionState.Open Then 
     objConnVirtual.Open() 
    End If 
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TableName", objConnVirtual) 
    objDR = cmd.ExecuteReader() 
    If objDR.Read() Then 
     response.write("Shazaam! Data shows up here") 
    End If 
    objDR.Close() 
    objConnVirtual.Close() 
End Sub 

當我運行上面的代碼時,我得到以下e RROR(在此行的代碼「objConnVirtual.Open()」的:
異常詳細信息:System.Data.OleDb.OleDbException:不是有效的文件名。

我檢查了數據庫的名稱,它是正確的(甚至複製/粘貼它,以確保)

如果我把連接字符串的「數據源」節到我的瀏覽器的地址欄中我可以成功查看遠程服務器上的共享內容。

不確定這是否是權限問題或代碼問題。
我已經使用了這個垃圾,但一直沒有找到解決辦法。

任何幫助,非常感謝。

回答

0

UPDATE

首先,謝謝大家誰提交了答案。

但是,我們結束了而不是使用'通過虛擬文件夾連接到遠程數據庫'方法,因爲使這個工作所需的權限的複雜性給我們帶來了比它值得的更多的問題。我們將UNC路徑放回到連接字符串中,這可能不是實現此目的的最佳方式,但正在爲我們工作。

0

確保兩個服務器都彼此內部訪問,還可以指定在連接字符串中數據庫服務器的IP &端口。

1

當訪問遠程訪問MDB數據庫,你必須指定一個像\\ remoteMachine \共享\ TEST.MDB UNC路徑。

確保您的應用程序池標識具有正確的權限連接到遠程共享。默認情況下,在IIS 6上,您正在使用網絡服務帳戶,該帳戶默認情況下不允許訪問遠程共享。

最好的辦法是讓應用程序池有一個專門的服務用戶身份運行。

+0

嗨路易斯,謝謝你的回答。當你說'讓AppPool運行一個專門的服務用戶'時,你可以擴展你的意思嗎?我爲我的應用程序添加了一個新的應用程序池,但仍無法通過網頁訪問數據庫。 – Dhaust 2008-12-04 06:53:31

0

更新

我還要提到的是它works on my machine(卻一次也沒有加載到生產箱)如果我聲明在網上的「的appSettings」部分的連接字符串。配置是這樣的:

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/> 

這使我認爲這可能是需要使用本地IUSER帳戶以外的域憑據的問題。

1

當您的Web應用程序嘗試讀取數據庫文件時,服務器上正在使用的帳戶是什麼?無論這個用戶帳號是什麼,它都需要有權限讀取該文件夾/文件。在IIS6中,您可以將虛擬文件夾配置爲使用任何用戶帳戶...在「目錄安全性」選項卡上的「身份驗證和訪問控制」下有一個「編輯」按鈕。

您的錯誤消息似乎只是一般性錯誤消息,權限問題是您的真正問題。