我有一个问题获得一个数据库,其生活在一个远程服务器。

我有一个ASP.NET 2.0网页尝试连接到一个数据库。
该数据库可通过一个虚拟的文件夹(其设置在IIS)。
虚拟的文件夹点在一个偏远的份额,其中包含的数据库。

虚拟的文件夹(在网应用程序的根本目录)是指在一个分享远程服务器上通过一个UNC路径:

\\databaseServerName\databaseFolder$\ 

虚拟的文件夹已经"阅读"和"浏览"的权限设定为'true'。

我存储连接串在若'部分的网络。配置:

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

连接的对象是declard上我的。aspx页:

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

当我跑上述码我到下面的错误(在这条线的代码'objConnVirtual.Open()':
异常详细信息:系统。数据。OleDb.OleDbException:没有一个有效的文件名称。

我已经检查的数据库名称和它是正确的(即使是复制/贴,以确保)

如果我把数据来源的连接串入的地址栏我浏览器我可以成功地看到的内容分享关于远程服务器。

不知道,如果这一问题的权限或与代码。
我已经google搜索的废话了但没有能够找到一个解决方案。

任何帮助是非常赞赏。

有帮助吗?

解决方案 5

更新

首先,感谢你给每个人提交的答案。

然而,我们结束了 使用的'连接以远程数据库通过虚拟的文件夹'的方法,因为复杂的权限,需要得到这工作是引起我们更多问题比它的价值。我们把UNC路回到连串的,这可能不是最好的方式来做到这一点,但是工作对于我们。

其他提示

在访问一个远程访问MDB数据库,必须指定一个UNC路像\ emoteMachine\分享\测试。mdb。

请确保您的应用游泳池的身份有权的权限,可以连接到的遥远的份额。通过默认在IIS6您使用的是网络服务的帐户,这是默认情况下不允许进入一个遥远的份额。

最好的办法是让该应用程序池运行一个专用服务的用户。

什么是正在使用的帐户你的服务器上时,你的网页应用程序试图读取数据库的文件?无论这个用户账户,这需要具有权限的阅读那个文件夹/文件。在IIS6你可以配置虚拟的文件夹中使用任何用户账号...在目录上的安全标签有一个编辑按钮在身份验证和访问控制。

这似乎可能是你的错误信息只是一个通用的错误信息,而权限的问题是你真正的问题。

确保两个服务器都具有内部访问的每一个其他指定的知识产权和口数据库服务器的连接串。

更新

我还应该提它 在我的机器上 (但没有一次装载了生产箱)如果我宣布该连串在若'部分的网络。config这样的:

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

这导致我认为这可能是一个问题,需要采用域凭据比其他地方IUSER帐户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top