为SQL Server Express 2012启用远程连接

我刚刚在我的家庭服务器上安装了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允许远程连接!?

520010 次浏览

你也可以设置

只听“不”

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

set enabled为Yes,

定义你的IP地址

“TCP动态”设置为“空白”

TCP端口到1433(或其他端口)

在我安装的SQL Server 2012开发者版,安装默认设置,我只需要加载SQL Server配置管理器-> SQL Server网络配置-> MSSQLSERVER协议,并将TCP/IP从禁用更改为启用。

您所需要做的就是打开服务器防火墙上的相关端口。

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

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

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

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

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

  1. SQL Server Management Studioicon开放。
  2. 如果你没有看到你的服务器(默认停靠在左边)按< >强F8 < / >强或转到View ->对象资源管理器
  3. 右键单击服务器的名称并选择属性(最后一项)
  4. 在左下角,你可以在“服务器”下面看到你的服务器的实际名称(不是Connection,而是在上面)。

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

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

执行START > EXECUTE,然后运行CLICONFG.EXE。

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

彻底测试应用程序。

我希望这对你有所帮助。

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

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

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

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

enter image description here

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

enter image description here

这篇文章帮助我……

如何在SQL Server中启用远程连接

SQL Server中的一切都配置好了,我的问题是防火墙阻塞端口1433

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

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

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

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

谢谢。

还有一件事…

Kyralessa提供了很好的信息,但我还有一件事要补充,即使在这篇文章之后,我也被难住了。

在“SQL Server Network Configuration > Protocols for Server > TCP/IP Enabled”下。右键单击TCP/IP,选择属性。在IP地址下,您需要为正在使用的每种连接类型将启用设置为Yes。

enter image description here

还要检查的一件事是,已命名实例的拼写是否正确!

本文在排除连接问题方面非常有用:如何处理连接SQL Server数据库引擎的问题

我必须添加一个防火墙入站端口规则来打开UDP端口1434。这是一个Sql Server浏览器监听。

我必须通过配置管理器添加端口,并在我的sql连接[host]\[db实例名],1433中添加端口号

注意instancename和port之间的,(逗号)

我最近遇到了这个问题。2015年8月

通过打开SQL Server配置管理器来解决

  • SQL Server网络配置-> SQLEXPRESS的协议
  • “TCP/IP -> IP地址”页签
  • 一切保持默认值,只设置IPALL: TCP Port为1433

可以与SQL Server管理器连接到机器:[hostaddress], 1433年

例子:

enter image description here

在我的例子中,数据库运行在非标准端口上。检查您正在连接的端口是否与运行数据库的端口相同。如果存在多个SQL server实例,请检查正确的实例。

我有同样的问题与本地安装的SQL Server 2014命名实例。使用FQDN\InstanceName进行连接将失败,而仅使用我的hostname\InstanceName进行连接则有效。例如:使用mycomputername\sql2014连接可以,但是使用mycomputername.mydomain.org\sql2014则不行。DNS正确解析,在SQL配置管理器中启用了TCP/IP,添加了Windows防火墙规则(然后关闭防火墙进行测试,以确保它没有阻止任何东西),但这些都没有解决问题。

最后,我不得不开始&;__abc0 &;SQL Server上的服务,修复了连通性问题。

我从未意识到SQL Server浏览器服务实际上是在帮助SQL Server建立连接;我的印象是,当你点击“浏览更多”时,它只是帮助填充下拉列表。如果端口#没有明确分配(类似于网站绑定如何帮助缓解托管多个网站的IIS web服务器上的相同问题),它实际上有助于将客户端请求与要使用的正确端口#对齐。

这个连接项给了我关于SQL Server浏览器服务的线索:https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name

  • 当您使用wstst05\sqlexpress作为服务器名时,客户端代码将机器名与实例名分开,并且wstst05是 与netbios名称进行比较。我看它们搭配起来没有问题 并且该连接被认为是本地的。从那里,我们检索 需要的信息没有联系SQL浏览器和连接到
  • . SQL实例通过共享内存没有任何问题 当您使用wstst05.capatest时,
  • 。本地\sqlexpress时,客户端代码将名称(wstst05.capatest.local)与 Netbios名称(wstst05),并考虑连接“远程”。这是 通过设计,我们肯定会考虑改进这一点 的未来。无论如何,由于考虑到连接远程和事实 它是一个命名实例,客户端决定它需要使用 用于名称解析的SQLBrowser。它试图在上联系SQL浏览器 wstst05.capatest。local (UDP端口1434),显然这部分失败了。 因此你得到的错误。

“SQL Server浏览器”的原因来自TechNet的服务(由我添加的重点):https://technet.microsoft.com/en-us/library/ms181087 (v = sql.120) . aspx

从“Using SQL Server Browser"部分:

如果SQL Server Browser服务未运行,则您仍然可以 以连接到SQL Server,如果您提供正确的端口号或 命名管道。例如,可以连接到的默认实例 如果运行在1433端口上,则使用TCP/IP。然而,< >强 SQL Server浏览器服务未运行,如下所示 :

.连接不正常
  • 任何试图连接到命名实例而没有完全指定所有参数的组件(例如TCP/IP端口或命名实例) 李管)< /强>。< / >
  • 生成或传递服务器实例信息的任何组件,这些信息以后可以被其他组件用于重新连接。
  • 连接到一个命名实例而不提供端口号或管道。
  • 如果没有使用TCP/IP端口1433,则将DAC发送到指定实例或默认实例。
  • OLAP重定向服务。
  • 在SQL Server Management Studio、企业管理器或查询分析器中枚举服务器。

如果您在客户端-服务器场景中使用SQL Server(例如, 当你的应用程序通过网络访问SQL Server), if 如果要停止或禁用SQL Server浏览器服务,必须分配一个 为每个实例指定端口号并写入客户端 应用程序代码始终使用该端口号。这种方法具有 以下问题< /强>:< / p >

  • 您必须更新和维护客户端应用程序代码,以确保它连接到正确的端口。
  • 为每个实例选择的端口可能被服务器上的其他服务或应用程序使用,导致SQL实例
  • .服务器不可用

更多信息来自同一篇文章&;How SQL Server Browser Works"部分:

< p >因为只有一个SQL Server实例可以使用端口或管道, 为named分配不同的端口号和管道名 实例,包括SQL Server Express。默认情况下,当 启用时,命名实例和SQL Server Express都配置为 使用动态端口,即SQL时分配一个可用端口 服务器启动。如果需要,可以将特定端口分配给 SQL Server实例。连接时,客户端可以指定 特定端口;但是如果端口是动态分配的,则端口 当SQL Server重启时,端口号可能会改变,所以请选择正确的端口号 客户端号码未知. ...当SQL Server客户端请求时 SQL Server资源时,客户端向网络库发送UDP消息 使用端口1434连接到服务器。SQL Server浏览器响应 请求实例的TCP/IP端口或命名管道。网络 库,然后通过完成连接 对象的端口或命名管道向服务器发送请求 所需的实例< / p >

连接SQL Server有问题?

尝试断开防火墙。

如果你可以在防火墙断开的情况下连接,可能是你错过了一些输入规则,比如“sql service broker”,将这些输入规则添加到你的防火墙中:

“sql admin connection”TCP端口1434

“sql admin connection”udp端口1434

“sql analysis service”TCP端口2383

" sql browse analysis service " TCP端口2382

“sql调试器/ rpc”TCP端口135

“SQL SERVER”TCP端口1433和其他如果你有动态端口

“sql service broker”TCP端口4022