我刚刚在我的家庭服务器上安装了SQL Server Express 2012。我试图从桌面PC的Visual Studio 2012连接到它,并反复得到众所周知的错误:

在建立与SQL Server的连接时,发生了与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确,SQL Server是否配置为允许远程连接。(提供商:Named Pipes提供商,错误:40 -无法打开到SQL Server的连接)

为了解决这个问题,我所做的是:

在服务器上运行“SQL Server配置管理器”,启用“SQL Server浏览器” 在服务器上为本地子网的TCP端口1433和1434添加Windows防火墙例外。 验证我在桌面上登录的用户在SQL Server实例上进行了登录。 验证我在SQL Server实例上使用Windows身份验证。 反复重启SQL Server和整个服务器。 把我的头发都拔出来。

如何让SQL Server 2012 Express允许远程连接!?


当前回答

你可以用这个来解决这个问题:

进入START > EXECUTE,运行cliiconfg . exe。

Named Pipes协议将在列表中排在第一位。降级,推广TCP/IP。

彻底测试应用程序。

我希望这对你有所帮助。

其他回答

我更喜欢“Rosdi Kasim”的方式,因为它不需要在IP上进行详细配置。

当我再次尝试启动另一个服务器时,我肯定会再次忘记它。

通过简单地启用Sql Server浏览器服务,然后在连接服务器时在IP后面添加\SQLEXPRESS来保持简单(KISS)。

直接使用IP而不使用“\SQLEXPRESS”是我的失败点,因为它不使用默认端口。

谢谢。

我有一个不同的问题,所有的答案到目前为止提到!

我应该首先说,我有它在Visual Studio,而不是SQL Server Express,但解决方案应该完全相同。

天啊,这其实很简单,也许还有点傻。 当我试图创建一个数据库,Visual Studio建议SQL Server的名称,它给了我我的Windows用户名,因为它实际上是服务器的名称,我去了。

实际上是我的Windows用户名+ \SQLEXPRESS。如果你没有改变任何设置,这可能也是你的。如果有效,停止阅读;这就是我的答案。如果不起作用,可能名字不同。

如果像我一样,你在Visual Studio中只遇到了这个问题,请执行以下步骤:

打开SQL Server Management studio。 如果你没有看到你的服务器(默认停靠在左边)按F8或转到视图->对象资源管理器。 右键单击服务器名称并选择Properties(最后一项) 在左下角,你可以看到你的服务器的实际名称在“服务器”下面(不是连接,而是上面)。

这是服务器的名称,这是您应该尝试连接的对象!不是Visual Studio建议的!

你也可以设置

只听“不”

在协议对话框中输入IP地址IP1(比如)

set enabled为Yes, 定义你的IP地址 “TCP动态”设置为“空白” TCP端口到1433(或其他端口)

连接到远程SQL Server的正确方法(不打开UDP端口1434并启用SQL Server浏览器)是使用ip和端口而不是命名实例。

使用ip和port代替命名实例也更安全,因为它减少了攻击表面积。

也许2张图就能表达2000个单词…

该方法使用指定的端口(这是大多数人想要的,我相信)..

此方法需要打开UDP端口1434和SQL Server浏览器运行..

很高兴我问了。我最终找到的解决办法是:

如何配置SQL Server Express以允许端口1433上的远程tcp/ip连接?

运行SQL Server配置管理器。 进入“SQL Server网络配置> SQLEXPRESS协议”。 确保TCP/IP已启用。

到目前为止,一切顺利,完全在意料之中。但之后:

右键单击TCP/IP并选择属性。 验证在IP2下,IP地址被设置为计算机在本地子网上的IP地址。 向下滚动到IPAll。 确保“TCP动态端口”为空。(我的端口设置为5位数。) 确保“TCP端口”设置为“1433”。(我的是空白。)

(此外,如果您遵循这些步骤,就不需要启用SQL Server浏览器,只需要允许端口1433,而不是1434。)

这额外的五个步骤是我在以前版本的SQL Server、Express或其他版本中从未做过的。它们似乎是必要的,因为我在服务器上使用了一个命名实例(myservername\SQLEXPRESS),而不是默认实例。在这里看到的:

配置服务器监听特定的TCP端口(SQL Server配置管理器)