无法远程连接到 SQL Server 实例

38
我正在尝试从我的本地计算机上的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。无论如何,这给了我两个选择:
1. 安装SSMS 2. 找到另一种方法,在没有安装SSMS的情况下完成第10步之后的操作
我尝试使用Web平台安装程序在我的VPS上安装SSMS,但它一直失败。我不知道为什么会失败,因为它似乎没有给出任何原因。有人知道我可以通过其他方式允许远程连接吗?
我的VPS上安装的SQL Server版本是SQL Server 2008 R2 Express。
更新:

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

另一个更新:

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

解决方案

感谢大家帮助我找到解决方案!我终于成功了!我遵循Filip De Vos的建议,在我的VPS防火墙中打开了端口,然后我收到了不同的错误消息。这促使我进一步调查,发现我使用的是错误的凭据进行登录!所以我为sa用户设置了密码,并成功使用该密码登录!再次感谢!


可能是重复的问题:无法连接到 SQL Server 2005 - ig0774
2
这更多是关于服务器配置的问题,而不是编程问题,您可以在serverfault.com上提问,可能会有更好的运气。 - JYelton
尝试这个链接:https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-the-remote-access-server-configuration-option?view=sql-server-2017 - Taras Melnyk
12个回答

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

      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连接,而只允许命名管道。

  1. 在“开始菜单”中,打开“程序” > “Microsoft SQL Server 2008” > “配置工具” > “SQL Server 表面区域配置”
  2. 在“表面区域配置实用程序”中,点击链接“SQL Server 配置管理器”
  3. 展开“SQL Server 网络配置”,选择“协议”
  4. 启用 TCP/IP。如果需要命名管道,则可以在此处启用。
  • 最后,Windows 防火墙需要允许与 SQL Server 的连接
  1. 当使用“动态端口”系统时,请添加 sqlserver.exe 例外。
  2. 否则,您可以为 SQL Server 端口(默认端口 tcp/1433)设置例外。
  3. 还要为 SQL Server Browser 添加一个例外 (端口 udp/1434)。

更多信息:

最后一点,SqlLocalDB只支持命名管道,所以无法通过网络连接到它。

@Filip De Vos 我按照您第一个链接中的说明打开了 SQL Server 实例和 SQL Server Browser 服务的两个端口,但是当我尝试连接时,现在出现了不同的错误:“无法连接到 [服务器]。用户 [用户] 的登录失败”。 - Leah
重启 SQL Server 服务。 - Shahdat
1
有趣的是,我已经走过这个答案5或6次了,然后又在互联网上四处搜索了一番,再回来尝试了一下,结果UDP 1434就奇迹般地起作用了。我不知道为什么,因为我甚至关闭了防火墙,但也没有帮助。 - Abdul Saleem

21

除了在服务管理器中配置SQL Server Browser服务为自动启动并启动该服务之外,我还需要在SQL Server Configuration Manager | SQL Server Network Configuration | Protocols for [INSTANCE NAME] | TCP/IP中启用TCP/IP

输入图片说明


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

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

  3. 接下来查看SQL Server服务。确保SQL Server浏览器正在运行。

  4. 重新启动SQL Server实例的服务。


Leah,仅供参考,SQL Server始终允许Windows身份验证,但可以启用/禁用SQL用户身份验证(参见如何禁用SQL Server的Windows身份验证模式)。祝好运。 - JYelton
那我不能使用我的普通远程桌面详情连接吗?我还没有设置任何连接到SQL Server实例的详细信息,因为SSMS安装也失败了!SSMS Express不兼容SQL Server 2008 Express R2或者您不知道安装失败的原因吗?感谢您的耐心等待! - Leah
您应该能够使用Windows凭据在本地工作站上使用SSMS进行连接。我的建议是,在尝试安装SSMS并尝试使其正常工作时,发布一个带有确切错误消息的问题到serverfaul或superuser上,并尝试解决这个问题,以便更轻松地配置SQL Server。回答您的问题,SSMS Express应该可以很好地与SQL Server Express配合使用。 - JYelton
谢谢。我安装SSMS时没有收到太多错误消息,但我会再试一次,并像您建议的那样发布错误消息。 - Leah
我已经成功在我的VPS上安装了SSMS - 但是我似乎仍然无法从本地机器连接到VPS实例。你有什么想法吗? - Leah
显示剩余2条评论

3
我曾遇到同样的问题,我的防火墙已正确配置,SQL Server Configuration Manager中启用了TCP/IP,但我仍无法从托管它的计算机外部访问我的SQL数据库。我发现解决方案是在服务中默认禁用了SQL Server Browser(在SQL Server Configuration Manager中没有可用的选项来启用它)。
我通过控制面板>管理工具>服务启用了它,然后双击SQL Server Browser。在常规选项卡中,使用下拉列表将启动类型设置为自动。然后返回SQL Server Configuration Manager,检查SQL Server Browser是否已启用。希望这可以帮助您。 enter image description here

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

  2. 接下来,您需要检查TCP和UDP使用哪些端口。您必须从Windows防火墙中打开这些端口。

5.单击此处以查看在Windows防火墙中打开特定端口的步骤

  1. 现在可以通过局域网访问SQL Server......

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


2

禁用防火墙并尝试连接。

如果可以连接,则启用防火墙并按照以下步骤操作:

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

对于出站规则,也执行相同的操作。

然后再次尝试连接。


不需要出站规则。在服务器上设置防火墙规则时,“出站”表示从服务器连接到其他机器。 - mrmashal

0

我已经构建了控制台应用程序和UWP应用程序,我的控制台连接正常,但我的UWP没有连接成功。在把头撞到桌子上几个小时后 - 如果它是一个内部网络服务器托管SQL数据库,则必须启用“私有网络(客户端和服务器)”。它在Package.appxmanifest和功能选项卡下。截图


0

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


0

如果您有多个实例...请确保所有实例的端口号都是唯一的,除了默认端口号1433以外没有其他端口号...


0
在我的情况下,问题是由于计算机名称不一致引起的。在系统设置中,我的计算机被命名为某个很长的名称,但显然用于某些通信的名称被截断了。
我将设置中的名称更改为较短的名称,问题得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接