繁体   English   中英

为 SQL Server Express 2012 启用远程连接

[英]Enable remote connections for SQL Server Express 2012

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

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

我做了什么来尝试解决这个问题:

  • 在服务器上运行 SQL Server Configuration Manager 并启用 SQL Server Browser
  • 在本地子网上的 TCP、端口 1433 和 1434 的服务器上添加 Windows 防火墙例外。
  • 验证我是否在 SQL Server 实例上为我在桌面上登录的用户登录。
  • 验证我是否在 SQL Server 实例上使用 Windows 身份验证。
  • 反复重启 SQL Server 和整个 dang 服务器。
  • 把我所有的头发都拉出来。

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

嗯, 很高兴我问了 我最终发现的解决方案在这里:

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

  1. 运行 SQL Server 配置管理器。
  2. 转到 SQL Server 网络配置 > SQLEXPRESS 的协议。
  3. 确保 TCP/IP 已启用。

到目前为止,一切都很好,完全符合预期。 但是之后:

  1. 右键单击 TCP/IP 并选择Properties
  2. 验证在 IP2 下,IP 地址是否设置为本地子网上的计算机 IP 地址。
  3. 向下滚动到 IPAll。
  4. 确保TCP 动态端口 (我的设置为一些 5 位端口号。)
  5. 确保TCP 端口设置为1433 (我的是空白。)

(另外,如果你遵循这些步骤,这是没有必要让SQL Server的浏览器,你只需要允许端口1433,而不是1434)

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

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

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

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

也许 2 张图片说 2000 个单词......

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

在此处输入图片说明

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

在此处输入图片说明

还有一件事...

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

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

在此处输入图片说明

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

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

Named Pipes 协议将是列表中的第一个。将其降级,并提升 TCP/IP。

彻底测试应用程序。

我希望这会有所帮助。

你也可以设置

全听不

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

设置启用为是,

定义你的 IP 地址,

将 TCP 动态设置为空白并

TCP 端口到 1433(或其他)

这篇文章帮了我...

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

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

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

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

  • SQL Server 网络配置 -> SQLEXPRESS 的协议
  • TCP/IP 上的属性 -> IP 地址选项卡
  • 一切保持默认,只设置 IPALL: TCP Port 为1433

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

例子:

在此处输入图片说明

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

我必须添加防火墙入站端口规则才能打开 UDP 端口 1434。这是 Sql Server Browser 侦听的一个。

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

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

Keep It Simple Stupid (KISS) 只需启用 Sql Server Browser 服务,然后在连接服务器时在 IP 后面添加 \\SQLEXPRESS。

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

谢谢。

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

注意实例名和端口之间的 ,(逗号)

我在本地安装的 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 建立连接; 我的印象是,当您单击“浏览更多”服务器以连接到它时,它只是帮助填充下拉列表,但它实际上有助于将客户端请求与要使用的正确端口 # 对齐,如果端口 # 未明确分配(类似网站绑定如何帮助缓解托管多个网站的 IIS Web 服务器上的相同问题)。

这个连接项目给了我关于 SQL Server Browser 服务的线索: 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) 进行比较,并认为连接是“远程”的。 这是设计使然,我们将来肯定会考虑改进这一点。 无论如何,由于考虑到远程连接以及它是一个命名实例的事实,客户端决定它需要使用 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。 例如,如果 SQL Server 在端口 1433 上运行,您可以使用 TCP/IP 连接到它的默认实例。但是,如果 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 浏览器的工作原理”部分同一篇文章的更多信息:

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

我遇到了一个与目前所有答案不同的问题!

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

好吧,上帝,这实际上非常简单,而且可能有点愚蠢。 当我尝试创建一个数据库并且 Visual Studio 建议 SQL Server 的名称时,它给了我我的 Windows 用户名,因为它实际上是我选择的服务器的名称。

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

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

  1. 打开SQL Server Management Studio 图标
  2. 如果您没有看到您的服务器(默认停靠在左侧),请按F8或转到View -> Object Explorer
  3. 右键单击服务器名称并选择属性(最后一项)
  4. 在左下角,您可以在“服务器”(不是连接,而是在其上方)下看到服务器的实际名称。

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

还要检查的另一件事是您是否正确拼写了命名实例!

这篇文章对解决连接问题非常有帮助: How to Troubleshoot Connecting to the SQL Server Database Engine

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

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

连接到 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 和其他,如果你有动态端口

“SQL 服务代理”TCP 端口 4022

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM