SqlException - 网络路径未找到

43
我正在运行我的代码,出现了这个错误。但是这是什么意思呢?
网络路径未找到。描述:在当前网络请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及错误在代码中的起源位置。
异常详细信息:System.ComponentModel.Win32Exception:网络路径未找到。
源错误:
在当前网络请求的执行过程中生成了一个未处理的异常。可以使用下面的异常堆栈跟踪来确定异常的来源和位置。
堆栈跟踪:
[Win32Exception (0x80004005): 网络路径未找到] [SqlException (0x80131904): 在建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。请验证实例名称是否正确,并验证 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开到 SQL Server 的连接)]

2
你需要展示与之相关的代码。 - Louis van Tonder
我真的需要展示所有吗? - user3278908
1
错误发生在哪里?我们不可能神奇地知道你想做什么。 - Louis van Tonder
@LouisvanTonder 绝对不是因为在大多数情况下这不是基于代码的问题。 - Hobbamok
13个回答

45

这可能与您的数据库连接字符串或类似的东西有关。

我刚刚解决了这个异常。问题在于我使用了一个 连接字符串 ,该字符串是用于在另一台机器(服务器)上进行调试时使用的。

我在Web.config中注释掉了错误的连接字符串并取消了正确的连接字符串的注释。现在我可以恢复正常运行了......这是我在长时间未在特定解决方案中工作后忘记检查的事情 ;)。


1
这与我的连接字符串有关。在配置中,我的数据库服务器是过时的。谢谢! - Abubakar Mehmood
2
如果这种情况偶尔发生,而且不是连接字符串的问题,因为连接字符串始终相同,那该怎么办? - Hrvoje Batrnek

8
如果您尝试从本地主机访问远程/生产数据库,并且忘记了该特定托管公司需要VPN登录才能访问数据库,那么您将收到完全相同的错误(我感到很傻)。请注意保持格式不变,不要删除HTML标签。

1
我只有在家工作时才会遇到这个问题。在办公室位置运行良好。但有时它也可以在家工作5-10分钟。此外,我能够从SSMS连接到数据库。 - Ram Venkat
1
在我的情况下,我正在连接到远程数据库;但是我只偶尔会遇到这个错误。 - MohammadHossein R

6
可能有以下几个原因:
1. SQL连接字符串错误。 2. SQL Server服务未运行。 3. 分布式事务协调器服务未运行。
首先,尝试从SQL Server Management Studio连接到远程数据库。如果连接成功,则问题可能出现在代码端或者如果您正在使用Visual Studio,则可能出现在其端。
检查连接字符串,如果问题仍然存在,请检查以下两个服务:
1. 分布式事务协调器服务。 2. SQL Server服务。
进入服务.msc并搜索并启动这两个服务。
以上解决方案适用于异常情况: [Win32Exception (0x80004005): The network path was not found]

这对我解决了问题,我之前无法通过SQL Server Management Studio连接到数据库,直到我从services.msc启动了上述服务。 - AymanKun

3

可能还需检查Web.config中的sessionState标签。

信不信由你,我曾经参与过的一些项目也会在这里设置连接字符串。

将此配置设置为:

<sessionState mode="InProc" />

在检查了所有其他连接字符串正确性之后,我解决了这个问题。


2

我也遇到了同样的问题。我通过在连接字符串前添加@(C#有一个叫做“字符串字面量”的东西)来解决这个问题,就像这样:

SqlConnection sconnection = new SqlConnection(@"Data Source=(Localdb)\v11.0; Initial Catalog=Mydatabase;Integrated Security=True");

sconnection.Open();

2

正如其他人指出的那样,这可能与连接字符串配置有关。

  1. 确保用户名和密码正确
  2. Data Source 指向正确的位置,例如如果您使用的是 SQL express,则应该是.\SQLEXPRESS
  3. Database 指向正确的数据库名称 希望这可以帮助到您。

1

请确保您的连接字符串正确。 检查连接是否已打开。

String CS=ConfigurationManager.COnnectionStrings["DBCS"].connectionString;
  if(!IsPostBack)
    {enter code here
   SqlConnection con = new SqlConnection(CS);
        con.Open();
    SqlCommand cmd = new SqlCommand("select * from tblCountry", con);
     SqlDataAdapter da = new SqlDataAdapter(cmd);
     DataTable dt = new DataTable();
da.Fill(dt);
//Bind data
}

0
在我的端上,问题是连接 VPN 失败(在家工作时)。而且,connectionString 使用了远程服务器的上下文。这导致了以下错误:
<Error>
  <Message>An error has occurred.</Message>
  <ExceptionMessage>The network path was not found</ExceptionMessage>
  <ExceptionType>System.ComponentModel.Win32Exception</ExceptionType>
  <StackTrace/>
</Error>

0

当我将我的解决方案从一台电脑复制到另一台电脑时,我必须更改web.config文件中的连接字符串。 即使您拥有相同的数据库名称,您也应该为服务器名称进行更改。


0
一开始,我遇到了同样的错误,但情况有所不同。我有两个连接字符串,一个用于ado.net,另一个用于EntityFramework,两个连接都是正确的。问题具体在EF的edmx文件中,我将ProviderManifestToken="2012"更改为ProviderManifestToken="2008",之后应用程序就正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接