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