为SQL Server Express 2012启用远程连接

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

与SQL Serverbuild立连接时发生networking相关或特定于实例的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:命名pipe道提供程序,错误:40 – 无法打开连接到SQL Server)

我所做的努力来解决这个问题:

  • 在服务器上运行SQL Serverconfigurationpipe理器并启用SQL Server浏览器
  • 在服务器上为TCP添加Windows防火墙例外,即本地子网上的端口1433和1434。
  • validation我在login的SQL Server实例上login了与我在桌面上login的用户。
  • validation我在SQL Server实例上使用Windows身份validation。
  • 反复重新启动SQL Server和整个dang服务器。
  • 把我的头发拉出来。

如何获得SQL Server 2012 Express以允许远程连接?

那么, 我很高兴问 。 我终于find的解决scheme在这里:

如何configurationSQL Server Express以允许端口1433上的远程TCP / IP连接?

  1. 运行SQL Serverconfigurationpipe理器。
  2. 转到SQL Servernetworkingconfiguration> SQLEXPRESS的协议。
  3. 确保TCP / IP已启用。

到目前为止,这么好,完全是预料之中的。 但是之后:

  1. 用鼠标右键单击TCP / IP并select属性
  2. validation在IP2下,IP地址设置为本地子网上的计算机IP地址。
  3. 向下滚动到IPAll。
  4. 确保TCPdynamic端口空的 。 (我的设置是一些5位数的端口号。)
  5. 确保TCP端口设置为1433 。 (我的空白。)

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

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

configuration服务器以侦听特定的TCP端口(SQL Serverconfigurationpipe理器)

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

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

也许2张图片说2000字…

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

在这里输入图像描述

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

在这里输入图像描述

还有一件事…

Kyralessa提供了很好的信息,但是我还有另外一件事情,即使在这篇文章之后,我仍然被困在那里。

在“SQL Servernetworkingconfiguration”>“服务器协议”>“TCP / IP已启用”下。 右键单击TCP / IP并select属性。 在IP地址下,您需要将您正在使用的每种连接types的“启用”设置为“是”。

在这里输入图像描述

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

转到START> EXECUTE,并运行CLICONFG.EXE。

命名pipe道协议将首先在列表中。parsing它,并促进TCP / IP。

彻底testing应用程序。

我希望这个帮助。

你也可以设置

全部收听

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

设置启用为是,

定义年龄IP地址,

设置TCPdynamic为空白

TCP端口到1433(或其他)

我最近有这个问题。 2015年8月

通过打开SQL Serverconfigurationpipe理器解决

  • SQL Servernetworkingconfiguration – > SQLEXPRESS协议
  • TCP / IP上的属性 – > IP地址选项卡
  • 一切都保持默认,只设置IPALL:TCP端口为1433

可以使用SQL Serverpipe理器连接到机器: [hostaddress],1433

例:

在这里输入图像描述

这篇文章帮助我…

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

一切都在SQL Serverconfiguration,我的问题是防火墙阻止端口1433

在安装SQL Server 2012 Developer Edition时,使用默认设置安装,我只需加载SQL Serverconfigurationpipe理器 – > SQL Servernetworkingconfiguration – > MSSQLSERVER协议,并将TCP / IP从禁用更改为启用。

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

我更喜欢“Rosdi Kasim”的方式,因为这不需要IP上的详细configuration。

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

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

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

谢谢。

我必须通过configurationpipe理器添加端口,并添加端口号在我的SQL连接[主机] \ [数据库实例名称] 1433

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

您只需打开服务器防火墙上的相关端口即可。

从迄今为止所提到的所有答案中,我遇到了一个不同的问题!

我应该开始说,我已经在Visual Studio中,而不是SQL Server Express,但解决scheme应该是完全一样的。

那么,上帝,其实很简单,也许有点愚蠢。 当我试图创build一个数据库和Visual Studiobuild议SQL Server的名称,它给了我我的Windows用户名,因为它实际上是我去的服务器的名称。

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

如果像我一样,在Visual Studio中只有这个问题来检查你的是什么,请按照以下步骤操作:

  1. 打开SQL Server Management Studio 图标
  2. 如果您没有看到您的服务器(默认停靠在左侧),请按F8或转到查看 – >对象资源pipe理器
  3. 右键单击服务器的名称,然后select“ 属性” (最后一项)
  4. 在左下angular你可以看到你的服务器的实际名称在“ 服务器 ”(不是连接,但在上面)。

这是服务器的名称,这是你应该尝试连接! 不是什么Visual Studiobuild议!

我有与SQL Server 2014本地安装命名实例相同的问题。 使用FQDN\InstanceName连接将失败,只使用我的hostname\InstanceName工作时连接。 例如:连接使用mycomputername\sql2014工作,但使用mycomputername.mydomain.org\sql2014没有。 DNS正确parsing,在SQLconfigurationpipe理器中启用了TCP / IP,添加了Windows防火墙规则(然后closures了防火墙进行testing以确保它没有阻塞任何东西),但是没有一个解决了这个问题。

最后,我不得不在SQL Server上启动“ SQL Server Browser ”服务,并解决了连接问题。

我从来没有意识到,SQL Server Browser服务实际上帮助SQL Server进行连接; 当我点击“浏览更多”服务器来连接时,我只是简单地帮助填充下拉列表,但实际上它有助于将客户端请求与正确的端口#alignment,以便在端口#未明确分配的情况下使用到网站绑定如何帮助缓解IIS Web服务器上承载多个网站相同的问题)。

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

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

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

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

如果SQL Server Browser服务没有运行,如果您提供了正确的端口号或命名pipe道,则仍然可以连接到SQL Server。 例如,如果在端口1433上运行,则可以使用TCP / IP连接到SQL Server的默认实例。但是, 如果SQL Server Browser服务未运行,则以下连接不起作用

  • 任何试图连接到命名实例而没有完全指定所有参数(如TCP / IP端口或命名pipe道)的组件
  • 任何生成或传递服务器\实例信息的组件,稍后可由其他组件使用来重新连接。
  • 连接到命名实例,而不提供端口号或pipe道。
  • DAC到一个命名实例或默认实例,如果不使用TCP / IP端口1433。
  • OLAPredirect器服务。
  • 枚举SQL Server Management Studio,企业pipe理器或查询分析器中的服务器。

如果您在客户端 – 服务器scheme中使用SQL Server(例如,当您的应用程序通过networking访问SQL Server时), 如果停止或禁用SQL Server Browser服务,则必须为每个实例分配一个特定的端口号,编写客户端应用程序代码以始终使用该端口号。 这种方法有以下问题

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

从“SQL Server浏览器如何工作”一节的相同文章中获得更多信息:

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

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

本文对解决连接问题非常有帮助: 如何解决连接到SQL Server数据库引擎的问题

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