SQL网络接口,错误:26-错误指定服务器/实例的位置

问题描述 投票:32回答:15

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

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

描述:

[当前执行期间发生未处理的异常网络请求。请查看堆栈跟踪以获取有关的更多信息错误及其在代码中的起源。

异常详细信息:

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>

请任何人帮忙找出问题所在吗?

asp.net sql-server-2008 asp.net-membership membership-provider roleprovider
15个回答
45
投票

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

在机器B上:

1。)打开Windows服务“ SQL Server Browser”并启动该服务

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

3。)在Windows防火墙中,启用传入端口TCP 1433(如果存在telnet连接)

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9McXZmUy5qcGcifQ==” alt =“在此处输入图像描述”>


1
投票

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


1
投票

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


1
投票

就我而言,我正在寻找服务。然后找到一个名为“ SQL Server(SQLEXPRESS)的服务。然后右键单击该服务。选择属性。然后单击启动。就这样。解决了这个问题。


0
投票

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


0
投票

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


0
投票

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

之前:

Data Source =。\ SQLEXPRESS; Initial目录= SchoolDB-EF6CodeFirst;集成安全= TRUE; MultipleActiveResultSets =真

后:

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


18
投票

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

以下被证明非常有帮助的内容,大部分来自this blog post

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

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

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

简而言之,我们收到此错误消息的原因是客户端堆栈无法从SQL浏览器接收SSRP响应UDP数据包。为了找出确切的问题,请按照以下步骤操作:

  1. 请确保您的服务器名称正确,例如,该名称上没有错字。

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

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

  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]。

Microsoft最近发布了一个指导性的演练,可以作为一站式服务来解决与SQL Server的大多数连接问题:Solving Connectivity errors to SQL Server


7
投票

答案在错误消息本身中:

Error Locating Server/Instance Specified

基本上,您在连接字符串中有错误的服务器\实例,即此位:

Data Source=MSSQL2008-1

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

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


7
投票

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

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

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

    public DbSet<SomeModel> SomeModels { get; set; }
}

4
投票

转到窗口+ R并键入services.msc,然后按Enter。

如果未自动启动,请手动启动SQL Server。

然后您尝试登录,它一定可以使用。


2
投票

我有相同的错误,并且我启动了SQL Server Express服务,并且可以正常工作。希望这会有所帮助。


2
投票

更改您的。\ SQLEXPRESS,并仅添加您的SQL Express名称,它对我有用

 <add name="BlogDbContext" connectionString="data source=your name here; initial catalog=CodeFirstDemo; integrated security=True" providerName="System.Data.SqlClient"/>

1
投票

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


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;" />

推荐问答