3

我使用 MS Access 2010 作为数据库构建了一个非常小的 ASP.NET 站点,该站点在测试模式下工作。这是针对离线 Intranet 应用程序的,所以我不关心安全性 - 硬件访问是这里黑客攻击的途径。这一切都在 VS WebExpress 2012 中构建。

当我尝试发布到 IIS 7.5 时,打开网站的启动页面,然后进入第二页,我收到两条顶级错误消息:

[Win32Exception (0x80004005): 找不到网络路径]

[SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)]

我的连接字符串是:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb";Persist Security Info=True

我不知道为什么这会产生 SQL Server 错误,因为我没有尝试使用 SQL Server。

我试过在这里查看SQL Server 方面的内容。我检查了 SQL Server 是否正在运行,SQL Browser 是否已启用并正在运行,并且防火墙中是否打开了相应的端口。

我已向 IIS 7.5 添加了一个至少指向 的连接字符串ACE.OLEDB.12.0,但我无法删除 SQL Server Express 的默认连接字符串。

我在这里查看了有关连接字符串的构造,并且在这里看到了有关删除不良连接字符串并在此处替换它们的说明(但我很害怕,因为我不明白)。

我打算使用 WIFI 平板控制器,并且我已经确定 IIS 运行良好,我可以在控制器上看到一个索引页面。

所以我一直在想方设法弄清楚这是 IIS 问题、SQL 安装/管理问题还是防火墙/安全问题。

4

1 回答 1

1

对于错误 0x80004005:

想法#1:尝试删除目录列表周围的双引号并重新测试您的代码(即使您可能已经尝试过,我也会提到这一点):

"C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb"

想法#2:错误确实说The network path was not found。尝试创建一个本地共享并授予 IIS 帐户至少对该共享的读取权限,将目录列表更改为类似

\\MyServer\MyShare\PersonalArt Version 0055.accdb

想法:#3:作为一名 DBA,我确实迎合 SQL Server,所以我会亲自尝试测试连接字符串本身,看看它是否返回数据——使用 SQL Server。如果它在这里不起作用,我也不希望它与 ASP.NET 一起使用:

尝试在 SQL Server 中运行它,看看您是否甚至可以通过 Access 中的表名获取数据(除非您有更好的方法来测试连接字符串):

SELECT * FROM  OPENROWSET('Microsoft.ACE.OLEDB.12.0',
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\inetpub\wwwroot\App_Data\PersonalArt Version 0055.accdb";Persist Security Info=True, 'SELECT * FROM <your table>')

但在此之前,您可能需要在 SQL Server 中运行以下命令,以便它识别 ACE.OLEDB.12.0 和分布式查询:

exec sp_configure 'Show Advanced Options', 1;
RECONFIGURE;
GO

exec sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
GO 

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
GO 

对于 SqlException (0x80131904):

SQL 错误听起来完全是另一个问题。尝试在 SQL Server 配置管理器中为生产SQL 框(或生产连接的任何地方)启用 SQL 以进行远程连接:

在此处输入图像描述

于 2016-01-06T18:28:28.293 回答