我第一次通过 VPN 连接到现有网络。我可以从 VPN 客户端 ping SQL Server 使用的 IP 地址,但 SSMS 没有连接到 SQL Server。我正在使用正确的登录 ID 和密码。
为什么会发生这种情况?有任何想法吗?
我第一次通过 VPN 连接到现有网络。我可以从 VPN 客户端 ping SQL Server 使用的 IP 地址,但 SSMS 没有连接到 SQL Server。我正在使用正确的登录 ID 和密码。
为什么会发生这种情况?有任何想法吗?
在默认实例上,SQL Server 默认侦听 TCP/1433。这可以改变。在命名实例上,除非配置不同,否则 SQL Server 会侦听动态 TCP 端口。这意味着如果 SQL Server 发现该端口正在使用中,它将选择另一个 TCP 端口。在命名实例的情况下,客户端通常如何通过与 SQL Server 侦听器服务/SQL 浏览器通信来找到正确的端口。侦听 UDP/1434 并且无法更改。如果你有一个命名实例,你可以配置一个静态端口,如果你需要使用 Kerberos 身份验证/委托,你应该这样做。
您需要确定的是您的 SQL Server 正在侦听的端口。然后,您需要与您的网络/安全人员联系,以确定他们是否允许通过 VPN 与该端口进行通信。如果它们是,如所示,请检查您的防火墙设置。有些系统有多个防火墙(我的笔记本电脑就是一个例子)。如果是这样,您需要检查系统上的所有防火墙。
如果所有这些都正确,请验证服务器没有限制通过 IP 地址访问 SQL Server 端口的 IPSEC 策略。这也可能导致您被阻止。
当这种情况发生在我身上时,那是因为 DNS 无法正常工作。尝试在 SQL Server 登录中使用 IP 地址而不是服务器名称。
确保为 TCP/IP 启用了 SQL Server(可能有人禁用了它)?
这也将帮助您检查/验证 SQL 实例正在使用的端口号(以防有人将其从默认端口 1433 更改)。
显然,端口 1433(或 SQL 正在侦听的任何端口)需要被您的机器和运行 SQL 的机器之间的任何防火墙解除阻塞。
检查 SQL 的网络配置(需要安装 SQL Server 客户端工具):开始 -> 程序 -> SQL Server 200x -> 配置工具 -> SQL Server 配置管理器
连接到您需要的机器,然后展开 Tree Item (LHS) “SQL Server Network Configuration”,然后选择实例。您应该有四个选项 - 共享内存、命名管道、TCP/IP 和 VIA。您可以在 RHS 窗口中检查 TCP/IP 是否已启用。
如果您双击 TCP/IP 并点击“高级”选项卡,您还可以查看端口号。
其他想法..您使用的是 SQL 身份验证还是 Windows(域)身份验证?
如果 SQL 身份验证(假设您使用的是用户名和密码),您确定要连接的 SQL 实例启用了混合模式身份验证吗?如果没有,您必须以管理员身份连接并更改默认安全设置以允许 SQL 身份验证。
如果是 Windows 身份验证,您的网络是否可能正在使用 Kerberos?有人会认为 VPN 凭据将用于握手。我会检查您的帐户是否具有适当的登录权限。
我在尝试通过 Hamachi VPN 远程连接时也遇到了这个问题。我已经尝试了互联网上所有可用的东西(包括这篇文章),但仍然没有用。请注意,当我的本地网络上的机器上安装了相同的数据库时,一切正常。最后,我能够使用以下修复取得成功:在远程机器上,启用 TCP/IP 协议上的 IP 地址,如下所示:
在远程计算机上,启动 SQL Server 配置管理器,展开 SQL Server 网络配置,选择“SQLEXPRESS 协议”(或“MSSQLSERVER”),右键单击 TCP/IP,在出现的对话框中转到 IP 地址选项卡,并确保“IP1”元素是Active=Yes
and Enabled=Yes
。记下 IP 地址(对我来说没有必要修改这些)。然后停止并启动 SQL Server 服务。之后,确保远程计算机上的防火墙被禁用,或者端口 1433 允许例外,该端口包括本地子网和上一个对话框中记录的地址的子网。在您的本地计算机上,您应该能够通过将服务器名称设置为192.168.1.22\SQLEXPRESS
(或[ip address of remote machine]\[SQL server instance name]
)来进行连接。
希望有帮助。
检查 SQL Server 正在使用的端口是否未被防火墙或 VPN 阻止。
Citrix Access Gateway 经常遇到这个问题。我通常会收到超时错误。如果您能够从网络上的客户端连接到数据库,但不能通过 VPN 从远程客户端连接到数据库,那么您可以忘记这里给出的大多数建议,因为它们都解决了服务器端问题。
当我将超时时间从默认值(15 秒)增加到 60 秒时,我能够连接,并且为了更好地衡量,将协议强制为 TCP/IP。这些事情可以在登录对话框的选项屏幕上完成:
只要您将防火墙设置为允许 SQL Server 实例使用的端口,您只需将数据源从更改=Server name
为=IP,Port
即,在连接字符串中使用类似的东西。
Data Source=190.190.1.100,1433;
您不必在客户端更改任何内容。
您可能没有打开/VPN 转发的 UDP 端口,它的端口号是 1433。
尽管客户端协议名称为“TCP/IP”,但 mssql 使用 UDP 进行 bitbanging。
SQL Server 使用 TCP 端口 1433。这可能被 VPN 隧道或服务器上的防火墙阻止。
连接到 VPN 时,每条消息都会通过 VPN 服务器,它无法将您的消息转发到 SQL 服务器正在处理的端口。
尝试
禁用 VPN 设置-> 属性-> TCP/IP 属性-> 高级-> 在远程网络上使用默认网关。
这样,您将首先尝试连接 SQL 服务器的本地 IP,然后才使用 VPN 服务器转发您
如果您使用的是 sql server 2005,请先启动 sql server browser 服务。
这解决了我通过 VPN 访问 SQL Server 2012 数据库的连接问题
使用 SQL Server 2012 配置管理器,
我去了 SQL Server 网络配置
然后单击新服务器实例并双击 TCP/IP 协议 [我之前也启用了此选项并重新启动了服务器,但仍然没有修复它]
现在 TCP/IP 已启用,我注意到 TCP/IP 属性高级对话框的“IP 地址”选项卡中的所有 IP 端口插槽都设置为 Enabled=No。
我很好奇为什么我的新安装将所有这些 IP 插槽都设置为 NO 而不是 Yes,所以我只是将它们更改为 YES。
现在通过 VPN 与服务器的连接效果很好,我没有更改任何端口号。
注意:我还卸载了 Visual Studio 2010 中的 SQL Server 2008 默认值,但我认为这对 TCP/IP 情况没有直接影响。一位同事告诉我,Visual Studio 附带的 2008 和 2005 安装可能会干扰 SQL 2012。
我在使用 SQL Server 2017 时也遇到了这个问题。
我通过VPN与服务器在同一个网络上,并且可以ping通它。在对无法使用任何身份验证方法感到沮丧之后——我在 SQL 服务器上设置了一个 SSH 服务器——并且我能够正常连接。这证实了正确的端口由于某种原因没有被击中。我什至创建了一个新的用户帐户、域帐户、两端的防火墙检查等......
我的解决方案是: 1. 将连接设置为在 SSMS 上严格使用 TCP/IP 2. 使用自定义字符串指向默认端口(例如:Data Source=192.168.168.166,1433;)
到目前为止,上面的所有其他评论都没有奏效。看起来必须包含端口(即使它是默认的)。
例如,尝试使用其 IP 更改服务器名称
SERVERNAME//SQLSERVER -> 192.168.0.2//SQLSERVER
它与我使用 VPN 完美结合
如果在您的LAN上一切正常,但当客户端应用程序尝试通过VPN建立连接时失败,您可以考虑将路由器MTU(最大传输单元)设置从AUTO更改为低于最大值。
更多参考资料:
我的解决方案是启用并启动服务“SQL Server Browser”。还要确保,您在防火墙中允许此服务。
我有类似的问题,但效果很奇怪。如果我通过 VPN (site2site) 使用 SMSS,我将无法连接。但如果我使用 OpenVPN 客户端,它就可以工作。这不是唯一的事情......使用相同的site2site vpn但使用DBeaver或HeidiSQL我可以连接......我编写了一个简单的c#控制台应用程序来测试连接并且它正在工作。唯一的问题是 SMSS。我不知道为什么,但我对此很好奇:)