无法远程连接到 SQL Server 实例

Posted

技术标签:

【中文标题】无法远程连接到 SQL Server 实例【英文标题】:Unable to connect to SQL Server instance remotely 【发布时间】:2011-10-22 16:42:04 【问题描述】:

我正在尝试从本地计算机上的 SQL Server Management Studio 访问 VPS 上的 SQL Server 实例。它不起作用(我得到的错误是:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。

我认为这是因为我需要配置数据库引擎以允许远程连接(如果我错了,请纠正我!)。所以我找到了这个分步指南来帮助我做到这一点:http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/我必须在指南中指出第 10 点,但我现在卡住了!我的 VPS 上没有安装 SQL Server Management Studio。无论如何,这给我留下了两个选择:

    安装 SSMS 在不安装 SSMS 的情况下找到另一种方法来执行指南中的第 10 点以后

我尝试使用 Web 平台安装程序在我的 VPS 上安装 SSMS,但一直失败。我不知道它为什么会失败,因为它似乎没有给出原因。有谁知道我如何以不同的方式允许远程连接?

我的 VPS 上安装的 SQL Server 版本是 SQL Server 2008 R2 Express。

更新

我已尝试禁用笔记本电脑和 VPS 上的防火墙,以查看是否是防火墙问题。这对错误消息没有影响。

另一个更新:

现在已经能够安装 SSMS(我直接从网站安装而不是使用 WPI),我已经能够检查服务器是否配置为允许远程连接(我去了 SSMS,连接到 SQL Server实例,右键单击连接,单击属性,转到连接选项卡。“允许远程连接到此服务器”已勾选)。

解决方案

感谢大家帮助我解决这个问题!我终于设法让它工作了!我按照 Filip De Vos 的建议在我的 VPS 上打开了防火墙中的端口,然后我收到了不同的错误消息。这导致我进一步调查,发现我使用了错误的凭据登录!因此,我为 sa 用户设置了密码,并成功使用该密码登录!再次感谢!

【问题讨论】:

Can't connect to SQL Server 2005的可能重复 这更像是一个服务器配置问题,而不是一个编程问题,如果您在 serverfault.com 上提问可能会更好。 @JYelton 谢谢 - 我也会试试。 相关:Configuring Windows Authentication on SQLEXPRESS 试试这个:docs.microsoft.com/en-us/sql/database-engine/configure-windows/… 【参考方案1】:

要启用混合身份验证,您可以更改以下注册表项:

HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\LoginMode

将值更新为 2 并重新启动 Sql Server 服务以允许混合身份验证。 请注意,可能需要更新 MSSQL.1 以反映您尝试更改的 SQL Server 实例的数量。

连接错误的原因可能是服务器上安装的病毒扫描程序阻止了sqlserver.exe

另一个原因可能是 SQL Server Browser 服务未运行。当此服务未运行时,您无法连接命名实例(当它们使用动态端口时)。

也有可能 Sql Server 没有设置为监听 TCP 连接并且只允许命名管道。

    在开始菜单中,打开程序 > Microsoft SQL Server 2008 > 配置工具 > SQL Server 外围应用配置 在外围应用配置实用程序中,单击链接“SQL Server 配置管理器” 展开“SQL Server 网络配置”和 选择协议。 启用 TCP/IP。如果您需要命名管道,那么您可以 也在这里启用它们。

最后但同样重要的是,Windows 防火墙需要允许连接到 SQL Server

    当您使用“动态端口”系统时,为 sqlserver.exe 添加一个例外。 否则,您可以为 SQL Server 端口(默认端口 1433)设置例外 还为 SQL Server Browser 添加一个例外。 (udp 端口​​ 1434)

更多信息:

How to: Configure a Windows Firewall for Database Engine Access Server Connectivity How-to Topics (Database Engine)

最后一点,SqlLocalDB 仅支持命名管道,因此您无法通过网络连接到它。

【讨论】:

这不会报告登录失败而不是网络/连接错误吗? @Tao 添加了允许传入连接的额外步骤 @Filip De Vos 非常感谢您的建议。您能否解释一下我如何为防火墙添加“SQL Server 端口的例外”? @Leah 请参阅我添加的“如何:为数据库引擎访问配置 Windows 防火墙”链接 @Filip De Vos 道歉 - 当你添加这些链接时,我一定是在添加我的评论。谢谢 - 我现在去看看。【参考方案2】:

除了将 Services.msc 中的 SQL Server Browser 服务配置为自动并启动该服务之外,我还必须在以下位置启用 TCP/IP:SQL Server 配置管理器 | SQL Server 网络配置 | [实例名称] 的协议 | TCP/IP

【讨论】:

赞美?? 我花了 15 分钟试图找到这个网站的密码,只是为了支持这个答案【参考方案3】:

    在您的 VPS 上启动 SQL Server 配置管理器。

    查看 SQL Server 网络配置。确保 TCP/IP 已启用

    接下来看看 SQL Server 服务。确保 SQL Server Browser 正在运行。

    为您的 SQL Server 实例重新启动服务。

【讨论】:

感谢您的帮助。但是,我已经尝试了问题中链接中详述的所有这些步骤。我已经走了这么远,错误消息仍然出现。 啊,抱歉,我没有意识到该链接具有相同的基本步骤。您不一定需要 SSMS,因为它本质上是一个连接到服务器以允许您执行查询和管理数据库表等的客户端应用程序。如果服务器实例设置为不允许 Windows 身份验证(步骤 10-12 涵盖) 你需要知道 sql 用户/密码组合才能连接。我不确定您是否可以在没有 SSMS 的情况下更改登录方法。 Leah 仅供参考,SQL Server 始终允许 Windows 身份验证,但可以启用/禁用 sql 用户身份验证。 (根据How can I disable the windows authentication mode of SQL Server)。祝你好运。 那么我无法连接到我的正常远程桌面详细信息?我还没有设置任何详细信息来连接到 SQL Server 实例,因为 SSMS 安装也失败了! SSMS Express 是否与 SQL Server 2008 Express R2 不兼容,或者您​​是否知道安装失败的原因?感谢您对我的包容! 您应该能够使用 Windows 凭据在本地工作站上使用 SSMS 进行连接。为了让生活更轻松,我的建议是在 serverfaul 或超级用户上发布一个问题,其中包含您在尝试安装 SSMS 并尝试使其正常工作时收到的确切错误消息。那时配置 SQL Server 会容易得多。要回答您的问题,SSMS Express 应该可以与 SQL Server Express 配合使用。【参考方案4】:

    打开 SQL Server 配置管理器...。 2.检查TCP和UDP是否正在运行...... 3.如果没有运行,请启用它们并检查SQL Server Browser是否正在运行。如果没有运行,请打开它.....

    接下来您必须检查 TCP 和 UDP 正在使用哪些端口。您必须从 Windows 防火墙打开这些端口.....

5.Click here to see the steps to open a specific port in windows firewall....

    现在 SQL Server 已准备好通过 LAN 访问......

    如果你想远程访问它(通过互联网),你必须做另一项工作,即“端口转发”。您已打开路由器上 SQL Server 中使用的 TCP 和 UDP 端口。现在路由器的配置不同了。如果您提供路由器的详细信息(即公司名称和版本),我可以向您展示如何转发特定端口的步骤。

【讨论】:

【参考方案5】:

我遇到了同样的问题,我的防火墙配置正确,在 SQL Server 配置管理器中启用了 TCP/IP,但我仍然无法从托管它的计算机外部访问我的 SQL 数据库。我发现解决方案是默认情况下在服务中禁用了 SQL Server Browser(并且在 SQL Server 配置管理器中没有可用的选项来启用它)。

我通过控制面板 > 管理工具 > 服务启用它,然后双击 SQL Server Browser。在常规选项卡中,使用下拉列表将启动类型设置为自动。然后返回 SQL Server 配置管理器并检查 SQL Server Browser 是否已启用。希望这可以帮助。

【讨论】:

【参考方案6】:

禁用防火墙并尝试连接。

如果可行,请启用防火墙并

Windows Defender 防火墙 -> 高级设置 -> 入站规则(右键单击)-> 新规则 -> 端口 -> 允许端口 1433(公共和私有)-> 添加

对出站规则执行相同操作。

然后再试一次。

【讨论】:

【参考方案7】:

我最近从 SQL 2008 R2 升级到 SQL 2012 并且遇到了类似的问题。问题是防火墙,但更具体地说是 SQL SERVER 的防火墙规则。自定义规则指向 SQL Server 的早期版本。试试这个,打开 Windows 防火墙>高级设置。找到 SQL Server 规则(它可能有一个自定义名称)。右键单击并转到属性,然后是程序和服务选项卡。如果选择了程序-此程序,您应该浏览正确版本的 sqlserver.exe。

【讨论】:

【参考方案8】:

我知道这已经快 1.5 岁了,但我希望我能帮助别人解决我的发现。

我已经构建了一个控制台应用程序和一个 UWP 应用程序,并且我的控制台连接良好,但我的 UWP 却没有。经过数小时的敲击后,如果它是托管 SQL 数据库的 Intranet 服务器,则必须启用“私有网络(客户端和服务器)”。它位于 Package.appxmanifest 和 Capabilities 选项卡下。Screenshot

【讨论】:

【参考方案9】:

如果你有多个实例...那么确保所有实例的端口号都是唯一的,并且除了默认的一个之外没有人的端口号是 1433...

【讨论】:

【参考方案10】:

打开 SQL Server 配置管理器。

单击 SQL Server Services,在右侧选择您在安装过程中创建的服务器(默认情况下其状态为停止),单击它一次,工具栏上应该会出现一个播放按钮。单击此播放按钮,等待其状态变为“Running”。现在你很好了。

打开 SQL Server Management Studio;将“Server Type”切换为“Database Engine”,将“Authentication”切换为“SQL Server Authentication”。默认登录名是“sa”,密码是您在创建服务器时选择的密码。现在你可以开始工作了。

【讨论】:

以上是关于无法远程连接到 SQL Server 实例的主要内容,如果未能解决你的问题,请参考以下文章

如何使用远程桌面连接到 SQL Server

SQL Server 2008/2014无法远程连接的可能原因之一

如何解决SQL Server 2008 无法连接到

如何从 WSL 连接到本地 Windows SQL Server 实例?

如何从 WSL 连接到本地 Windows SQL Server 实例?

SQL server 2005 无法连接到服务器?