46

好吧,我有一个大问题要解决好几天,但我做不到,所以我需要你的帮助。我在 asp.net 4.0 中有一个 Web 应用程序,我在其中实现了自定义成员资格和角色提供程序。当我打开应用程序主页时,它会连接到数据库并检索一些信息。还有一个登录表单,当我登录时,它通过数据库验证用户并将我重定向到保留页面,但出现此错误:

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

描述:

当前 Web 请求执行期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详情:

System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

我尝试了很多东西,我在stackoverflow中找到了一些解决方案,但没有任何效果。这是我的连接字符串:

<connectionStrings>
  <clear/>
  <remove name="LocalSqlServer"/>
     <add name="LocalSqlServer" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient" />
     <add name="AgencyConn" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
        Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
        Packet Size=4096" providerName="System.Data.SqlClient"/>
</connectionStrings>

以下也是成员资格和角色管理器 web.config 部分:

<membership defaultProvider="AuthProvider">
  <providers>
    <clear/>
      <add name="AuthProvider" type="AuthenticationProvider" applicationName="~/Reserved/" connectionStringName="AgencyConn"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear/>
      <add name="MyRoleProvider" type="RoleAccessProvider" connectionStringName="AgencyConn"/>
  </providers>
</roleManager>

请任何人都可以帮助找出问题所在?

4

19 回答 19

53

如果您从 Windows 机器 A 连接到 Windows 机器 B(安装了 SQL Server 的服务器),并且收到此错误,则需要执行以下操作:

在机器 B 上:

1.)打开名为“SQL Server Browser”的Windows服务并启动该服务

2.) 在 Windows 防火墙中,启用传入端口 UDP 1434(以防机器 A 上的 SQL Server Management Studio 正在连接或机器 A 上的程序正在连接)

3.) 在 Windows 防火墙中,启用传入端口 TCP 1433(以防有 telnet 连接)

4.) 在 SQL Server 配置管理器中,为端口 1433 启用 TCP/IP 协议

在此处输入图像描述

于 2013-03-14T18:16:47.057 回答
22

对我来说,问题是 DNS 记录是错误的......

以下内容非常有帮助,主要取自这篇博文。

此错误消息实际上非常具体,解决方案非常简单。

仅当您尝试连接到 SQL Server 命名实例时才会收到此错误消息。对于默认实例,您永远不会看到这一点,因为即使我们在此阶段失败(即错误定位服务器/指定的实例),我们仍将继续尝试使用默认值进行连接,例如默认 TCP 端口 1433、命名管道的默认管道名称。

每次客户端连接 SQL Server 命名实例时,我们都会向服务器机器的 UDP 端口 1434 发送一个 SSRP UDP 数据包。我们需要这一步来了解 SQL 实例的配置信息,例如启用的协议、TCP 端口、管道名称等。如果没有此信息,客户端将不知道如何连接,并且会失败并显示此错误消息。

总之,我们收到此错误消息的原因是客户端堆栈无法接收来自 SQL Browser 的 SSRP 响应 UDP 数据包。为了隔离确切的问题,请按照下列步骤操作:

  1. 确保您的服务器名称正确,例如,名称没有拼写错误。

  2. 确保您的实例名称正确,并且您的目标机器上实际上存在这样的实例。(请注意,某些应用程序会将 \ 转换为 )。

  3. 确保服务器机器可访问,例如,DNS 可以正确解析,您可以 ping 服务器(并非总是如此)。

  4. 确保 SQL Browser 服务正在服务器上运行。

  5. 如果服务器上启用了防火墙,则需要将 sqlbrowser.exe 和/或 UDP 端口 1434 置于异常中。

在检查了步骤 1 到 4 之后,有一种极端情况可能仍然失败。它也可能发生在以下情况:

  1. 您的服务器是集群或多宿主机器上的命名实例
  2. 你的客户端是一台开启了防火墙的 Vista 机器。

一个可以证明有用的工具(它对我有用)是PortQry。如果此命令返回信息并且它包含您的目标实例,那么您可以排除上述 4) 和 5) 的可能性,这意味着您确实运行了 SQL Browser 并且您的防火墙不会阻止 SQL Browser UDP 数据包。在这种情况下,您可以检查其他可能的问题,例如不正确的连接字符串。

最后一点,当您使用 SNAC 时,同一问题的错误消息是:[SQL Native Client]SQL 网络接口:错误定位服务器/实例指定 [xFFFFFFFF]。

微软最近发布了一个指导演练,可以作为一站式服务来解决 SQL Server 的大多数连接问题:解决 SQL Server 的连接错误

于 2015-04-02T08:17:30.237 回答
9

转到 window+R 并键入 services.msc 并按 Enter。

如果没有自动启动,则手动启动 SQL Server。

然后你尝试登录,它必须是有效的。

于 2018-08-11T17:13:03.630 回答
8

在我的 ASP.NET MVC 4 应用程序中,我遇到了同样的问题。

我解决它的方法是在DatabaseContext. 通过传递我想通过基本构造函数使用的连接字符串的名称。

public class DatabaseContext : DbContext
{ 
    public DatabaseContext()
        : base("DefaultConnection") // <-- this is what i added.
    {
    }

    public DbSet<SomeModel> SomeModels { get; set; }
}
于 2013-10-10T23:40:54.887 回答
7

答案在错误消息本身中:

Error Locating Server/Instance Specified

基本上,您在连接字符串中使用了错误的服务器\实例,即这一点:

Data Source=MSSQL2008-1

错误且未指向服务器,或者服务器名称未解析为 IP 地址。另外两个可能性:(1) 运行 SQL Server 的机器上的 SQL Browser 服务没有运行,或者 (2) SQL 机器上的 Windows 防火墙(或其他防火墙)拒绝传入连接。

最终,如果服务器名正确,那么它就会变成网络问题,您需要找出客户端无法连接到服务器的原因(这更有可能是基本网络问题而不是 SQL Server 配置问题) .

于 2012-12-06T23:38:03.467 回答
4

如果您使用的是 SQL Server 开发人员版,请将连接字符串中的“.\SQLEXPRESS”更改为您的计算机名称。

前:

数据源=.\SQLEXPRESS;初始目录=SchoolDB-EF6CodeFirst;集成安全=True;MultipleActiveResultSets=True

后:

数据源=DESKTOP-DKV41G2;初始目录=SchoolDB-EF6CodeFirst;集成安全=True;MultipleActiveResultSets=True

于 2019-09-03T10:01:44.800 回答
3

更改您的 .\SQLEXPRESS,并仅添加您的 SQL express 名称,它适用于我

 <add name="BlogDbContext" connectionString="data source=your name here; initial catalog=CodeFirstDemo; integrated security=True" providerName="System.Data.SqlClient"/>
于 2018-06-22T23:53:50.593 回答
2

在我的例子中,web.config 文件中的 connectionString 名称拼写错误。这是 Entity Framework 使用的数据库上下文的名称。我想这是当 EF 无法将 connectionString 名称与上下文匹配时出现的错误。

于 2018-01-24T23:32:52.877 回答
2

我遇到了同样的错误,我启动了 SQL Server Express 服务并且它工作正常。希望这可以帮助。

于 2017-08-15T06:24:50.180 回答
1

我遇到了这个问题,并修复了它。问题似乎是这样的:

错误的:

<add key="aaa" value="server=[abc\SQL2K8];database=bbb;uid=ccc;password=ddd;" />

正确的

<add key="aaa" value="server=abc\SQL2K8;database=bbb;uid=ccc;password=ddd;" />
于 2014-04-10T15:21:27.710 回答
1

我们最近遇到了同样的问题。我们发现代码是在 machine.confg 文件中查找名为“LocalSqlServer”的连接字符串。我们添加了这条线,它工作正常。

于 2013-01-04T10:34:42.233 回答
1

该问题是由 DNS 无法解析主机名引起的。尝试使用 IP 地址而不是“计算机名称”。

于 2015-09-22T07:28:28.067 回答
1

就我而言,我搜索了服务。然后找到一个名为“SQL Server(SQLEXPRESS)的服务。然后右键单击它。选择属性。然后单击开始。就是这样。解决了这个问题。

于 2018-06-04T19:35:02.570 回答
1

这不是一个大问题,只需更改您的服务器名称 即可查看服务器名称更改的位置:

在此处输入图像描述

如何查找服务器名称

  1. 开跑
  2. 写'cmd'
  3. 在控制台窗口“主机名”中写入。

您的服务器名称将显示给您

谢谢你。

于 2020-08-03T05:15:24.357 回答
0

结果发现机器上安装了 2 个版本的 SQL Server。
删除旧的解决了我这边的问题。

更多细节:
在启动期间,两个服务的服务都在尝试运行。
第一个加载的那个工作正常,阻止了第二个启动。
PS 停止第一台服务器的服务并手动启动第二台服务器并不能正常工作。

于 2020-11-24T10:24:05.217 回答
0

同样的问题。就我而言,我解决了将项目设置为“启动项目”的问题。

于 2019-01-07T06:33:08.420 回答
0

打开 SQL Server 配置管理器并在 SQL Server 服务下启用 SQL Server 状态,如果它通过右键单击停止并单击开始。

于 2021-06-20T07:22:27.627 回答
0

有同样的问题然后我使用连接字符串没有./(比如DESKTOP-E53DUML而不是这个./DESKTOP-E53DUML

于 2020-05-29T14:11:39.583 回答
0

这个问题花了我大约一天的时间,在我的一个 ASP.NET MVC 项目上,幸运的是我在我的机器上而不是在生产环境中遇到了问题,所以比较 web.config 我看到并删除了错误消失了......一个真正的挑战连接 SQL Server 错误 26 到这个问题

于 2016-12-05T05:40:41.603 回答