首页 文章

为SQL Server Express 2012启用远程连接

提问于
浏览
391

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

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

我试图解决这个问题:

  • 在服务器上运行SQL Server配置管理器并启用SQL Server Browser

  • 在服务器上为TCP,本地子网上的端口1433和1434添加Windows防火墙例外 .

  • 验证我在桌面上登录的用户登录SQL Server实例 .

  • 确认我在SQL Server实例上使用Windows身份验证 .

  • 反复重启SQL Server和整个dang服务器 .

  • 拔掉我所有的头发 .

How can I get SQL Server 2012 Express to allow remote connections!?

16 回答

  • 3

    这篇文章对我帮助...

    How to enable remote connections in SQL Server

    SQL Server中的所有内容都已配置,我的问题是防火墙阻塞了端口1433

  • 10

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

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

    保持简单愚蠢(KISS)只需启用Sql Server Browser服务,然后在连接服务器时在IP后面添加\ SQLEXPRESS .

    直接使用没有“\ SQLEXPRESS”的IP是我的失败点,因为它没有使用默认端口 .

    谢谢 .

  • 1

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

    Note the , (comma) between instancename and port

  • 717

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

    最后,我必须在SQL Server上启动“ SQL Server Browser ”服务,并修复了连接问题 .

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

    这个连接项给了我关于SQL Server Browser服务的线索: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.local \ sqlexpress时,客户端代码无法将名称(wstst05.capatest.local)与netbios名称(wstst05)进行比较,并将连接视为“远程” . 这是设计使然,我们肯定会考虑在未来改进这一点 . 无论如何,由于考虑了远程连接以及它是命名实例的事实,客户端决定它需要使用SQLBrowser进行名称解析 . 它试图在wstst05.capatest.local(UDP端口1434)上联系SQL浏览器,显然该部分失败了 . 因此你得到的错误 .

    TechNet提供"SQL Server Browser"服务的原因(我强调):https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx

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

    如果SQL Server Browser服务未运行,则在提供正确的端口号或命名管道时仍可以连接到SQL Server . 例如,如果在端口1433上运行,则可以使用TCP / IP连接到SQL Server的默认实例 . 但是,如果SQL Server Browser服务未运行,则以下连接不起作用:尝试连接的任何组件到没有完全指定所有参数(例如TCP / IP端口或命名管道)的命名实例 . 生成或传递服务器\实例信息的任何组件,以后可供其他组件重新连接 . 连接到命名实例而不提供端口号或管道 . 如果不使用TCP / IP端口1433,则DAC到命名实例或默认实例.OLAP重定向器服务 . 枚举SQL Server Management Studio,企业管理器或查询分析器中的服务器 . 如果在客户端 - 服务器方案中使用SQL Server(例如,当您的应用程序通过网络访问SQL Server时),如果停止或禁用SQL Server Browser服务,则必须为每个实例分配特定的端口号,编写客户端应用程序代码以始终使用该端口号 . 此方法存在以下问题:必须更新和维护客户端应用程序代码,以确保它连接到正确的端口 . 您为每个实例选择的端口可能被服务器上的其他服务或应用程序使用,导致SQL Server实例不可用 .

    以及来自“SQL Server Browser如何工作”部分的同一篇文章中的更多信息:

    因为只有一个实例SQL Server可以使用端口或管道,为命名实例(包括SQL Server Express)分配不同的端口号和管道名称 . 默认情况下,启用时,命名实例和SQL Server Express都配置为使用动态端口,即在SQL Server启动时分配可用端口 . 如果需要,可以将特定端口分配给SQL Server实例 . 连接时,客户端可以指定特定端口;但是如果端口是动态分配的,则端口号可以在SQL Server重新启动时随时更改,因此客户端无法识别正确的端口号 . ...当SQL Server客户端请求SQL Server资源时,客户端网络库使用端口1434向服务器发送UDP消息.SQL Server Browser使用所请求实例的TCP / IP端口或命名管道进行响应 . 然后,客户端应用程序上的网络库通过使用所需实例的端口或命名管道向服务器发送请求来完成连接

  • 0

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

  • 14

    连接到远程SQL Server(无需打开UDP端口1434和启用SQL Server Browser)的正确方法是使用 ip and port 而不是 named instance .

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

    也许2张照片说2000字......

    This method uses the specified port (this is what most people want I believe)..

    enter image description here

    This method requires opening UDP port 1434 and SQL Server Browser running..

    enter image description here

  • 101

    我不得不添加防火墙入站端口规则来打开UDP端口1434.这是一个Sql Server Browser监听 .

  • 0

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

  • 3

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

  • 9

    One More Thing...

    Kyralessa提供了很好的信息,但我还有另外一件事要补充,即使在这篇文章之后我也难以接受 .

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

    enter image description here

  • 5

    好吧,glad I asked . 我最终发现的解决方案是:

    How do I configure SQL Server Express to allow remote tcp/ip connections on port 1433?

    • 运行SQL Server配置管理器 .

    • 转到SQL Server网络配置> SQLEXPRESS的协议 .

    • 确保已启用TCP / IP .

    到目前为止,这么好,完全是预期的 . 但是之后:

    • 右键单击TCP / IP并选择 Properties .

    • 确认在IP2下,IP地址设置为本地子网上计算机的IP地址 .

    • 向下滚动到IPAll .

    • 确保 TCP Dynamic Portsblank . (我的设置为5位数的端口号 . )

    • 确保 TCP Port 设置为 1433 . (我的空白 . )

    (另外,如果您按照这些步骤操作,则无需启用SQL Server Browser,您只需要允许端口1433,而不是1434 . )

    这些额外的五个步骤是我在以前版本的SQL Server,Express或其他版本中不记得曾经做过的事情 . 它们似乎是必要的,因为我在服务器上使用命名实例(myservername \ SQLEXPRESS)而不是默认实例 . 看这里:

    Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)

  • 17

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

    转到START> EXECUTE,然后运行 CLICONFG.EXE.

    命名管道协议将首先在列表中 . 远程,并促进TCP / IP .

    彻底测试应用程序 .

    我希望这有帮助 .

  • 2

    要检查的另一件事是你正确地拼写了命名实例!

    本文非常有助于解决连接问题:How to Troubleshoot Connecting to the SQL Server Database Engine

  • 30

    I had a different problem from what all of the answers so far mentioned!

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

    嗯,上帝,它实际上非常简单,也许有点愚蠢 . 当我尝试创建一个数据库并且Visual Studio建议了SQL Server的名称时,它给了我我的Windows用户名,因为它实际上是我为它服务的服务器的名称 .

    实际上它实际上是我的Windows用户名 \SQLEXPRESS . 如果你没有工作,也许这个名字是不同的 .

    如果像我一样,您只在Visual Studio中遇到此问题以检查您的内容,请按照以下步骤操作:

    • 打开SQL Server Management Studioicon .

    • 如果您没有看到服务器(默认停靠在左侧),请按F8或转到 View -> Object Explorer .

    • 右键单击服务器名称,然后选择 Properties (最后一项)

    • 在左下方,您可以在“ Server ”下看到服务器的实际名称(不是连接,但在它上面) .

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

  • 1

    你也可以设置

    全部听取否

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

    set enabled为Yes,定义你的IP地址,将TCP Dynamic设置为Blank,将TCP端口设置为1433(或其他)

  • 6

    我最近遇到了这个问题 . 2015 Aug

    打开 SQL Server Configuration Manager 解决

    • SQL Server网络配置 - > SQLEXPRESS的协议

    • TCP / IP上的属性 - > IP地址选项卡

    • 一切都保持默认,只设置IPALL:TCP端口为 1433

    可以用 SQL Server Manager 连接到机器:[hostaddress],1433

    例:

相关问题