Sql server 2012 为SQL Server Express 2012启用远程连接

Sql server 2012 为SQL Server Express 2012启用远程连接,sql-server-2012,remote-connection,sql-server-2012-express,Sql Server 2012,Remote Connection,Sql Server 2012 Express,我刚刚在我的家庭服务器上安装了SQL Server Express 2012。我正试图从我的桌面PC从Visual Studio 2012连接到它,并反复出现众所周知的错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接 我为解决此问题所做的努力: 在服务器上运行SQL Server Configu

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

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接

我为解决此问题所做的努力:

在服务器上运行SQL Server Configuration Manager并启用SQL Server浏览器 在服务器上为TCP、本地子网上的端口1433和1434添加Windows防火墙例外。 验证我在桌面上登录的用户是否登录了SQL Server实例。 验证我正在SQL Server实例上使用Windows身份验证。 反复重新启动SQL Server和整个dang服务器。 把我的头发都拔出来。 如何让SQL Server 2012 Express允许远程连接

嗯。我最终发现的解决方案是:

运行SQL Server配置管理器。 转到SQLServer网络配置>SQLEXPRESS协议。 确保TCP/IP已启用。 到目前为止,一切顺利,完全可以预料。但是:

右键单击TCP/IP并选择属性。 验证在IP2下,IP地址是否设置为本地子网上计算机的IP地址。 向下滚动到IPAll。 确保TCP动态端口为空。我的设置为5位数的端口号。 确保TCP端口设置为1433。我的是空白的。 此外,如果按照这些步骤操作,则无需启用SQL Server Browser,只需允许端口1433,而不需要允许端口1434

这五个额外的步骤是我不记得在以前版本的SQLServer、Express或其他版本中必须执行的。它们似乎是必需的,因为我在服务器上使用的是命名实例myservername\SQLEXPRESS,而不是默认实例。请看这里:

您还可以设置

听我说不

在协议对话框中,然后在IP地址IP1中说

将启用设置为是

定义您的IP地址

将TCP Dynamic设置为空白,然后

TCP端口到1433或其他任何端口


在我安装的SQL Server 2012 Developer Edition(使用默认设置安装)上,我只需加载SQL Server配置管理器->SQL Server网络配置->MSSQLSERVER协议,并将TCP/IP从禁用更改为启用。

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

我遇到的问题与前面提到的所有答案不同

首先,我应该说我在VisualStudio中使用了它,而不是SQLServerExpress,但解决方案应该完全相同

天啊,这其实很简单,也许有点愚蠢。 当我尝试创建数据库时,VisualStudio建议使用SQL Server的名称,它给了我Windows用户名,因为它实际上是服务器的名称,所以我选择了它

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

如果像我一样,您在Visual Studio中仅遇到此问题来检查您的内容,请执行以下步骤:

打开SQLServerManagementStudio。 如果默认情况下没有看到服务器停靠在左侧,请按F8或转到查看->对象资源管理器。 右键单击服务器名称并选择最后一项的属性 在左下角,您可以看到服务器的实际名称位于服务器连接下方,而不是服务器连接上方。
这是服务器的名称,您应该尝试连接到它!不是VisualStudio所建议的

您可以使用此解决此问题:

转到开始>执行,然后运行CLICONFG.EXE

命名管道协议将位于列表的第一位。将其降级,然后升级TCP/IP

彻底测试应用程序


我希望这有帮助。

在不打开UDP端口1434和启用SQL Server浏览器的情况下连接到远程SQL Server的正确方法是使用ip和端口,而不是使用命名实例

使用ip和端口而不是命名实例也更安全,因为它减少了攻击表面积

也许两张图片能说出2000个单词

这个方法使用指定的端口。我相信这是大多数人想要的

此方法需要打开UDP端口1434并运行SQL Server Browser


这篇文章帮助我


SQL Server中的所有内容都已配置,我的问题是防火墙阻止了端口1433,我更喜欢Rosdi Kasim的方式,因为这不需要在IP上进行详细配置

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

保持简单愚蠢的基斯 只需启用Sql Server浏览器服务,然后在连接服务器时在IP后面添加\SQLEXPRESS即可

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

谢谢。

还有一件事

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

在SQL Server网络配置>服务器协议>启用TCP/IP下。右键单击TCP/IP并选择属性。在IP地址下,您需要为正在使用的每个连接类型将Enabled设置为Yes


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


本文对排除连接问题非常有帮助:

我必须添加防火墙入站端口规则以打开UDP端口1434。这是Sql Server浏览器侦听的服务器

我必须通过Configuration Manager添加端口,并在我的sql连接[host]\[db instance name],1433中添加端口号


请注意,instancename和端口之间的逗号最近出现了这个问题。2015年8月

通过打开SQL Server配置管理器解决了此问题

SQL Server网络配置->SQLEXPRESS协议 TCP/IP->IP地址选项卡上的属性 所有内容都保持默认,仅将IPALL:TCP端口设置为1433 可以使用SQL Server Manager连接到计算机:[hostaddress],1433

例如:


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

我对SQL server 2014本地安装的命名实例也有相同的问题。使用FQDN\InstanceName进行连接将失败,而仅使用我的主机名\InstanceName进行连接则有效。例如:使用mycomputername\sql2014进行连接有效,但使用mycomputername.mydomain.org\sql2014无效。DNS解析正确,在SQL Configuration Manager中启用了TCP/IP,添加了Windows防火墙规则,然后关闭防火墙进行测试,以确保它没有阻止任何内容,但所有这些都没有解决问题

最后,我必须在SQL Server上启动SQL Server浏览器服务,这解决了连接问题

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

此连接项为我提供了有关SQL Server浏览器服务的线索:

当您使用wstst05\sqlexpress作为服务器名称时,客户机代码将计算机名称与实例名称分开,并且wstst05是 与netbios名称进行比较。我认为他们匹配没有问题 并且连接被认为是本地的。从那里,我们检索 所需信息,无需联系SQL Browser并连接到 通过共享内存访问SQL实例,没有任何问题。 使用wstst05.capatest.local\sqlexpress时,客户端代码无法将名称wstst05.capatest.local与 netbios名称wstst05并将连接视为远程连接。这是 通过设计,我们一定会考虑改进这一点。 将来无论如何,考虑到远程连接和 如果它是一个命名实例,客户端决定它需要使用 用于名称解析的SQLBrowser。它尝试在上与SQL浏览器联系 wstst05.capatest.local UDP端口1434,显然该部分出现故障。 因此你会得到错误。 我添加TechNet emphasis的SQL Server浏览器服务的原因:

从“使用SQL Server浏览器”部分:

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

尝试连接到命名实例而不完全指定所有参数(如TCP/IP端口或命名实例)的任何组件 管 生成或传递服务器\实例信息的任何组件,这些信息稍后可由其他组件用于重新连接。 连接到命名实例而不提供端口号或管道。 如果不使用TCP/IP端口1433,则将DAC连接到命名实例或默认实例。 OLAP重定向程序服务。 正在SQL Server Management Studio、Enterprise Manager或查询分析器中枚举服务器。 例如,如果在客户机-服务器方案中使用SQL Server, 当您的应用程序跨数据库访问SQL Server时 网络,如果 如果停止或禁用SQL Server浏览器服务,则必须分配 为每个实例指定端口号,并编写客户端 始终使用该端口号的应用程序代码。这种方法具有以下优点: 以下问题:

您必须更新和维护客户端应用程序代码,以确保它连接到正确的端口。 为每个实例选择的端口可能会被服务器上的其他服务或应用程序使用,从而导致SQL实例失败 服务器不可用。 以及同一篇文章中SQL Server浏览器工作原理部分的更多信息:

因为只有一个SQL Server实例可以使用端口或管道, 为命名管道指定了不同的端口号和管道名称 实例,包括SQL Server Express。默认情况下,当 启用后,命名实例和SQL Server Express都配置为 使用动态端口,也就是说,当SQL 服务器启动。如果需要,可以将特定端口分配给 SQL Server的实例。连接时,客户端可以指定 特定端口;但是,如果动态分配端口,则 任何时候SQL Server重新启动时,数字都可以更改,因此正确的端口 客户端不知道该号码。。。当SQL Server客户端请求 在SQL Server资源中,客户端网络库发送UDP消息 使用端口1434连接到服务器。SQL Server浏览器以 请求实例的TCP/IP端口或命名管道。网络 然后,客户端应用程序上的库通过以下方式完成连接: 使用的端口或命名管道向服务器发送请求 期望实例


连接到SQL Server时出现问题

尝试断开防火墙。

如果您可以在防火墙断开连接的情况下连接,可能会丢失一些输入规则,如sql service broker,请将此输入规则添加到您的防火墙:

SQL管理员连接TCP端口1434

SQL管理连接UDP端口1434

SQL分析服务TCP端口2383

SQL浏览分析服务TCP端口2382

SQL调试器/RPC TCP端口135

SQL SERVER TCP端口1433和其他(如果您有dinamic端口)


SQL SERVICE BROKER TCP端口4022

如果SQL Server Express不是唯一的实例,则可能需要取消分配其他实例上的端口1433。我有一个2008 R2默认实例MSSQLSERVER,我可以从外部连接到这两个实例的唯一方法是将端口1433分配给上面提到的2012实例,并将旧默认实例的端口分配更改为TCP Dynamic Ports=0和TCP port=blank。相反的方法只能访问默认实例。IPAll设置是救世主的建议!我的和你的一样…:以防对其他人有帮助。。。这有所帮助,但在启动SQL Server浏览器服务之前,我仍然无法连接。注意:我必须进入Windows服务应用程序才能这样做,因为SQL Server Browser服务的启动类型由于某种原因被禁用。将启动类型更改为“自动”,启动了服务,然后能够连接。在安装到SQLEXPRESS实例的Windows 8和SQL 2012 Express SP1上,如果删除动态端口,我必须将其设置为除空白以外的任何值,设置为0后,它将为您重新计算一个新的随机端口,并在高级防火墙控制面板中打开TCP 1433和UDP 1434传入端口规则。当动态端口为空时,SQL Server只是挂起启动。只是想说声谢谢并向上投票。你为我节省了很多时间。你介意用正确的连接语法更新你的帖子吗?我需要使用myserver\sqlexpress,[portnumber],不带括号。注意它是,而不是:快速注意:对我来说,这不起作用。由于某种原因,错误的IP在那里。然而,Kyralessa的步骤起到了作用,因为它们涉及到更新IP。这对我的一台服务器有效,但对另一台服务器无效。不幸的是,这并不是你需要做的全部。正如上面公认的答案所述,还有很多其他步骤需要采取。事实上,在我的情况下,这就是我需要做的所有事情,不公平地标记下来,实际上是有用的输入。为开放1433端口添加一条规则为我解决了问题。我认为公平地说,很多事情必须保持一致,在我获得Windows 10服务SQL之前,will varyI必须完成所有Kyralessa、Pete和这一步。你能详细说明一下你说这是正确的方法是什么意思吗?@Kyralessa-Ha!。。。在尝试连接远程实例4-5个小时后,我再次清醒过来,我可能应该解释一下,这里的“正确”是指从我的上下文中读取的。使用实例名连接是“不正确的”,因为我没有启用SQL Server Browser。为了避免误解,我在回答中添加了一些说明。谢谢;如果您无权运行浏览器服务,则必须指定port.plus 1,以显示MS使用逗号而不是列作为分隔符
端口号在安装了SQL 2012 Express SP1的Windows 8.1上执行此操作导致SQL在启动时挂起:我将所有IP条目1、2、…、设置为enabled+active、erased dynamic、erased port,并将IPAll port设置为1433,然后必须添加规则以打开TCP 1433,如果不使用名称,则不需要在防火墙中使用UPD 1434,但是只有端口号。哇,真是一颗宝石。。。谢谢从来都不知道它的存在。这将客户端配置为使用TCP/IP,而不是server.OMG,它可以工作!!刚刚登录投票支持这个答案。thanksI通过启用SQL Server浏览器服务解决了问题:D。感谢您发布它。解锁1433 UDP端口帮助了我!如果您使用的是Azure虚拟机,请不要忘记通过Azure的管理门户打开端口,该门户充当虚拟机自身防火墙的外部防火墙。。。。就像这样:对于那些想知道Sql Server Configuration Manager在新版本中消失在何处的人来说,每个人都知道,或者很容易发现Azure允许的端口配置。我没有想到端口可能被WINDOWS VM防火墙阻止。谢谢