【问题标题】:Enable remote connections for SQL Server Express 2012为 SQL Server Express 2012 启用远程连接
【发布时间】:2012-07-01 22:46:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我通过启用 SQL Server Browser 服务解决了问题:D。感谢您发布它。
  • 解锁 1433 UDP 端口对我有帮助!
  • 如果您使用的是 Azure VM,请不要忘记通过 Azure 的管理门户打开端口(它充当 VM 自身防火墙的外部防火墙......)。像这样:stackoverflow.com/questions/34251382/…
  • 对于那些想知道 Sql Server 配置管理器在新版本中消失到哪里的人,head on over here

标签: sql-server-2012 remote-connection sql-server-2012-express


【解决方案1】:

好吧,glad I asked。我终于发现的解决方案在这里:

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

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

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

  1. 右键单击 TCP/IP 并选择属性
  2. 确认在 IP2 下,IP 地址设置为本地子网上的计算机 IP 地址。
  3. 向下滚动到 IPAll。
  4. 确保 TCP 动态端口空白。 (我的端口号设置为 5 位数字。)
  5. 确保 TCP 端口 设置为 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)

【讨论】:

  • 如果 SQL Server Express 不是唯一的实例,则可能需要在其他实例上 UNASSIGN 端口 1433。我有一个 2008 R2 默认实例 (MSSQLSERVER),我可以从外部连接到它们的唯一方法是将端口 1433 分配给 2012 实例(如上所述)并将旧默认实例的端口分配更改为 TCP 动态端口 =“0”和 TCP 端口 =“”(空白)。反之则只能访问默认实例。
  • IPAll 设置是 SAVIOR 的建议!我的和你的一样……:D
  • 如果它可以帮助其他人......这有帮助,但我仍然无法连接,直到我启动 SQL Server Browser 服务。 (注意:我必须进入 Windows“服务”应用程序来执行此操作,因为 SQL Server Browser 服务的启动类型由于某种原因被“禁用”。将启动类型更改为“自动”,启动服务,然后能够连接。)
  • 在安装到 SQLEXPRESS 实例的 Windows 8 和 SQL 2012 Express SP1 上,我必须将动态端口设置为空白以外的任何内容(如果您删除它,设置为 0,那么它将重新计算一个新的随机端口为您)并在高级防火墙控制面板中同时打开 TCP 1433 和 UDP 1434 传入端口规则。当动态端口为空时,SQL Server 刚刚在启动时挂起。
  • 只是想说声谢谢和点赞。你为我节省了很多时间。您介意使用正确的连接语法更新您的帖子吗?我需要使用不带括号的myserver\sqlexpress,[portnumber]。注意它是, 而不是:
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 您能否详细说明您的意思是说这是“正确”的做法?
  • @Kyralessa Ha!... 现在我在拔头发 4 到 5 个小时试图连接到我的远程实例后又清醒了,我应该解释一下这里的“正确”是指从我的上下文中阅读。因为我没有启用 SQL Server Browser,所以使用实例名称连接是“不正确的”。
  • 我在回答中添加了一些说明以避免误解。
  • 谢谢 ;) 当您无权运行浏览器服务时,您必须指定端口。
  • 加 1 表示 MS 使用逗号而不是列作为端口号的分隔符
【解决方案3】:

还有一件事......

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

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

【讨论】:

    【解决方案4】:

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

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

    Named Pipes 协议将在列表中排在第一位。将其降级,并提升 TCP/IP。

    彻底测试应用程序。

    希望对你有所帮助。

    【讨论】:

    • 哇,真是个好东西……谢谢。从来不知道它甚至存在。
    • 这会将 CLIENT 配置为使用 TCP/IP,而不是服务器。
    • 天啊,它有效!刚刚登录投票给这个答案。谢谢
    【解决方案5】:

    你也可以设置

    全部听NO

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

    将启用设置为是,

    定义你的 IP 地址,

    将 TCP 动态设置为空白并

    TCP 端口到 1433(或其他)

    【讨论】:

    • 在安装了 SQL 2012 Express SP1 的 Windows 8.1 上执行此操作会导致 SQL 在启动时挂起 :(
    • 我将所有 IP 条目 1、2、...设置为启用 + 活动、删除动态、删除端口,并将 IPAll 端口设置为 1433,然后必须添加规则以打开 TCP 1433和防火墙中的UPD 1434(如果不使用名称,则不需要1434,而只需要端口号)。
    【解决方案6】:

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

    通过打开SQL Server配置管理器

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

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

    例子:

    【讨论】:

      【解决方案7】:

      这篇文章帮助了我...

      How to enable remote connections in SQL Server

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

      【讨论】:

      • 每个人都知道或很容易遇到 Azure 允许的端口配置。我没有想到该端口可能被 WINDOWS VM 防火墙阻止。谢谢。+1
      【解决方案8】:

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

      【讨论】:

      • 快速说明:对我来说,这不起作用。由于某种原因,错误的IP在那里。然而,Kyralessa 的步骤起到了作用,因为它们涉及更新 IP。
      • 这适用于我的一台服务器,但不适用于另一台。
      【解决方案9】:

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

      【讨论】:

        【解决方案10】:

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

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

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

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

        谢谢。

        【讨论】:

          【解决方案11】:

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

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

          【讨论】:

            【解决方案12】:

            我在本地安装的 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-name

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

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

            来自“使用 SQL Server Browser”部分:

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

            • 在没有完全指定所有参数(例如 TCP/IP 端口或命名实例)的情况下尝试连接命名实例的任何组件 管道)
            • 生成或传递服务器\实例信息的任何组件,这些信息以后可能被其他组件用来重新连接。
            • 连接到命名实例而不提供端口号或管道。
            • DAC 到命名实例或默认实例(如果不使用 TCP/IP 端口 1433)。
            • OLAP 重定向器服务。
            • 在 SQL Server Management Studio、企业管理器或查询分析器中枚举服务器。

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

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

            以及来自“SQL Server 浏览器的工作原理”部分的同一篇文章的更多信息:

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

            【讨论】:

              【解决方案13】:

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

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

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

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

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

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

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

              【讨论】:

                【解决方案14】:

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

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

                【讨论】:

                  【解决方案15】:

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

                  【讨论】:

                    【解决方案16】:

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

                    【讨论】:

                    • 不幸的是,这不是“你需要做的全部”。如上面接受的答案所述,还有很多其他步骤需要采取。
                    • 实际上,在我的情况下,这就是我需要做的所有事情,所以不公平地标记了实际有用的输入。
                    • 添加规则以打开端口 1433 是为我解决的问题。
                    • 我认为可以公平地说“很多事情必须保持一致,您需要哪些额外的步骤会有所不同”
                    • 我必须完成所有 Kyralessa、Pete 和这个的工作,然后才能让 Windows 10 服务 SQL。
                    【解决方案17】:

                    连接到 SQL Server 时遇到问题?

                    尝试断开防火墙。

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

                    “SQL 管理员连接”TCP 端口 1434

                    “SQL 管理员连接”UDP 端口 1434

                    “SQL 分析服务”TCP 端口 2383

                    “SQL 浏览分析服务”TCP 端口 2382

                    “SQL 调试器/RPC”TCP 端口 135

                    "SQL SERVER" TCP PORT 1433 和其他,如果你有动态端口

                    “SQL 服务代理”TCP 端口 4022

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2021-04-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多