无法连接到 SQL Express(错误:26-无法定位服务器/实例)

28
我正在处理一个运行SQL Server 2008 R2 Express的特定盒子,但无法连接。我已经检查过允许远程连接和TCP/IP已启用,配置了外部IP到1433端口的连接,但使用Wireshark未看到任何入站连接请求,导致怀疑是防火墙问题。服务器由外部公司托管,需要自己解决问题,因为托管公司对此一无所知。

你能提供你正在使用的连接字符串吗? - Sai Kalyan Kumar Akshinthala
我有:server-external-ip\SQLEXPRESS - 0x0000001E
服务器名称没问题,包括你提供的(初始目录、用户名、密码)或(集成安全=true),对吧?因此,请提供完整的连接字符串。这就是实际的问题所在。 - Sai Kalyan Kumar Akshinthala
1
Windows和SQL身份验证都无法工作。它们在服务器本身上工作,因此凭据没有问题。由于我正在使用管理工具,因此没有连接字符串详细信息可提供。 - 0x0000001E
19个回答

51

能否通过命令行界面来实现呢?因为“SQL Server Browser”被我的公司阻止了。 - Xavier W.
帮了我个大忙。我在故障排除期间忘记关闭了 SQL 浏览器。 - JayJay123

26

按下 windows+R 打开“运行”窗口。

services.msc 

找到 SQL Server(SQLEXPRESS),右键启动服务,然后检查。


谢谢,对于我的SQLExpress,安装后我还应该将服务的帐户更改为“本地系统帐户”,并重新启动计算机,因为不存在SQL帐户会导致此问题。 - Jie
你刚刚拯救了我的一天。 - evry1falls

17

转到SQL Server 配置管理器 > SQL Server 服务>,右侧窗口显示可能停止的所有服务器。如果您正在使用"SQLEXPRESS",则 右键单击 SQL Server(SQLEXPRESS) 并启动它。然后尝试连接服务器...我遇到了同样的问题,但通过这些步骤解决了。


2
我尝试了这个步骤,但我的sqlexpress已经在运行了... 我仍然无法连接。 - SCrub

6

以下是一种简单的排除连接问题的方法:

  1. 使用文本编辑器创建一个名为test.udl的空文件
  2. 双击test.udl文件,然后指定您的连接属性
  3. 点击"测试连接"按钮

通过让托管提供商对上述端口的像素进行更改,解决了这个问题。然而,这样一个简单的请求却花费了将近4小时30分钟的时间。 - 0x0000001E

6
我最近遇到了同样的问题,但我使用的是Windows 10 Technical Preview Build 10041和SQL Server 2014(高级版)。
按照上面的建议执行相同的操作:
具体而言,我的问题是我没有在Sql Server Configuration Manager-> SQL Server Network Configuration-> Protocols for SQLEXPRESS中启用TCP/IP。
打开它后,您必须转到IP地址选项卡,对于我来说,将IPAll更改为TCP端口1433并删除TCP动态端口值即可。
按照其他步骤确保1433正在侦听(使用netstat -an确保0.0.0.0:1433正在侦听),并且您可以从客户端计算机telnet到该端口。
最后,我赞同建议从连接中删除\SQLEXPRESS。
重要的是,最后一行非常重要!看起来它是针对Windows 10的;请从连接字符串中删除\SQLEXPRESS。令人沮丧的是,SQL Management Studio使用完整或简短的连接字符串都可以正常连接,但Visual Studio只接受不带\SQLEXPRESS的连接字符串。

谢谢!连接字符串“compname\”可以正常工作。默认的“compname\sqlexpress”根本不起作用。 - Alexey
1
我可以确认,在Windows 10上只有IP/主机名而没有\SQLEXPRESS才有效。 - Dennis

3

服务器上的主动防火墙可能会导致这种情况。您可以尝试(暂时)关闭它并查看是否解决了问题。

如果确实是由防火墙引起的,您应该能够通过添加入站规则来解决TCP端口1433设置为允许,但我个人尝试连接未成功。


2

我曾经遇到过同样的问题,但是通过在SQL配置管理器中重新启动浏览器服务并在连接窗口中删除实例名称中的\SQLEXPRESS来解决了这个问题。


1

这个问题让我困扰了几天,是在IT人员更改了SQL Server的一些安全设置之后出现的。

我的Web应用程序和桌面应用程序都使用EntityFramework

在我更改了SQL Server的某些设置之后,Web应用程序恢复正常工作了,但桌面应用程序仍然存在问题。但是我为两个应用程序使用了相同的连接字符串,这样做没有任何意义,一个可以工作,而另一个不能。

然后我进行了大量的搜索,直到我发现有人在 这里 说需要在 $ServerName\$DatabaseInstanceName,1433 后添加端口号1433

添加后,异常变成了:

System.Data.SqlClient.SqlException: Login failed for user 'domain\name-PC$'

然后我找到了这个 链接。它说要添加 Trusted_Connection=False;

整个连接字符串应该像这样:

data source=XXXXX\SQLSERVER,1433;initial catalog=XXXDB;user id=UserID;password=PWD;Trusted_Connection=False;MultipleActiveResultSets=True;

希望这个答案能帮助那些遇到“通用异常”问题的人:
错误:26-无法定位指定的服务器/实例。
(注:保留了原文中的HTML标签)

1
如果你尝试连接,但仍未成功,可能需要更改连接部分的端口符号“,”为“:”。在我的情况下,我已经这么做了。
连接字符串中未指定相应的TCP端口或管道名称(例如 Srv1\SQL2008, 1433)。

1
这段文字涉及到安全问题。请确保您的防火墙(包括 Windows 防火墙和杀毒软件防火墙)已经进行了双重检查。有时,当您禁用杀毒软件防火墙并重新启动计算机后,Windows 防火墙会自动激活并继续阻止您的应用程序。希望这对您有所帮助。

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