未通过 *** 连接到 SQL Server
Posted
技术标签:
【中文标题】未通过 *** 连接到 SQL Server【英文标题】:Not connecting to SQL Server over *** 【发布时间】:2010-10-14 17:43:25 【问题描述】:我第一次通过 *** 连接到现有网络。我可以从 *** 客户端 ping SQL Server 使用的 IP 地址,但 SSMS 没有连接到 SQL Server。我使用了正确的登录 ID 和密码。
为什么会发生这种情况?有什么想法吗?
【问题讨论】:
尝试连接时收到什么样的错误消息? 【参考方案1】:如果您使用的是 sql server 2005,请先启动 sql server 浏览器服务。
【讨论】:
【参考方案2】:我的解决方案是启用并启动服务“SQL Server Browser”。 还要确保您在防火墙中允许此服务。
【讨论】:
这与很久以前已经发布的另一个答案相同。【参考方案3】:如果您的 LAN 一切正常,但当客户端应用程序尝试通过 *** 建立连接时失败,您可以考虑更改路由器 MTU (最大传输单位) 设置从 AUTO 到低于最大值。
更多参考资料:
https://faq.draytek.com.au/2021/03/15/adjusting-***-mss-mtu-settings/ https://community.spiceworks.com/topic/217130-mtu-issues-in-***-connections https://community.ui.com/questions/EdgeRouter-4-FortiGate-***-Performance-issues/84932edc-d2ee-4bdd-bd47-e0993210f17e?page=1【讨论】:
【参考方案4】:确保将端口 1433 添加到防火墙例外,并确保在防火墙端口设置下选中“任何 IP 地址”(见附件)。
【讨论】:
【参考方案5】:尝试更改服务器名称及其 IP 例如
SERVERNAME//SQLSERVER -> 192.168.0.2//SQLSERVER
它在我使用 *** 时完美运行
【讨论】:
【参考方案6】:这解决了我通过 *** 访问 SQL Server 2012 数据库的连接问题
使用 SQL Server 2012 配置管理器,
我去了SQL Server网络配置
然后点击NEW server instance,双击TCP/IP协议 [我之前也启用了这个选项并重新启动了服务器,但仍然没有修复它]
现在 TCP/IP 已启用,我注意到 TCP/IP 属性高级对话框的“IP 地址”选项卡中的所有 IP 端口插槽都设置为 Enabled=No。
我很好奇为什么我的新安装将所有这些 IP 插槽都设置为 NO 而不是 Yes,所以我只是将它们更改为 YES。
现在通过 *** 与服务器的连接效果很好,我没有更改任何端口号。
注意:我还卸载了 Visual Studio 2010 中的 SQL Server 2008 默认值,但我认为这对 TCP/IP 情况没有直接影响。一位同事告诉我,Visual Studio 附带的 2008 和 2005 安装可能会干扰 SQL 2012。
【讨论】:
【参考方案7】:我在使用 SQL Server 2017 时也遇到了这个问题。
我通过 *** 与服务器在同一个网络上,并且可以 ping 它。在对任何身份验证方法都不起作用感到沮丧之后——我在 SQL 服务器上设置了一个 SSH 服务器——并且我能够正常连接。这证实了正确的端口由于某种原因没有被击中。我什至创建了新的用户帐户、域帐户、两端的防火墙检查等...
我的解决方案是: 1.在SSMS上设置Connection严格使用TCP/IP 2.使用自定义字符串指向默认端口(例如:Data Source=192.168.168.166,1433;)
到目前为止,上述所有其他 cmets 都没有工作。似乎必须包含端口(即使它是默认的)。
【讨论】:
【参考方案8】:只要您将防火墙设置为允许 SQL Server 实例使用的端口,您只需将数据源从 =Server name
更改为 =IP,Port
即,在连接字符串中使用类似这样的内容。
Data Source=190.190.1.100,1433;
您不必在客户端更改任何内容。
【讨论】:
这在我的情况下有效,但在重新寻址服务器时会出现问题。【参考方案9】:Citrix Access Gateway 经常遇到这个问题。我通常会收到超时错误。如果您能够从网络上的客户端连接到数据库,但不能通过 *** 从远程客户端连接到数据库,那么您可以忘记这里给出的大多数建议,因为它们都解决了服务器端问题。
当我将超时时间从默认值(15 秒)增加到 60 秒时,我能够连接,并且为了更好的措施,强制协议使用 TCP/IP。这些事情可以在登录对话框的选项屏幕上完成:
【讨论】:
【参考方案10】:我在尝试通过 Hamachi *** 远程连接时也遇到了这个问题。我已经尝试了互联网上所有可用的东西(包括这篇文章),但仍然没有用。请注意,当我的本地网络上的机器上安装了相同的数据库时,一切正常。最后,我能够使用以下修复成功:在远程机器上,启用 TCP/IP 协议上的 IP 地址,如下所示:
在远程机器上,启动 SQL Server 配置管理器,展开 SQL Server 网络配置,选择“Protocols for 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]
)来进行连接。
希望对您有所帮助。
【讨论】:
【参考方案11】:在默认实例上,SQL Server 默认侦听 TCP/1433。这可以改变。在命名实例上,除非配置不同,否则 SQL Server 会侦听动态 TCP 端口。这意味着如果 SQL Server 发现该端口正在使用中,它将选择另一个 TCP 端口。在命名实例的情况下,客户端通常如何通过与 SQL Server 侦听器服务/SQL 浏览器通信来找到正确的端口。侦听 UDP/1434 并且无法更改。如果您有一个命名实例,您可以配置一个静态端口,如果您需要使用 Kerberos 身份验证/委托,则应该这样做。
您需要确定 SQL Server 正在侦听的端口。然后,您需要与您的网络/安全人员联系,以确定他们是否允许通过 *** 与该端口进行通信。如果它们是,如所示,请检查您的防火墙设置。有些系统有多个防火墙(我的笔记本电脑就是一个例子)。如果是这样,您需要检查系统上的所有防火墙。
如果所有这些都正确,请验证服务器没有限制通过 IP 地址访问 SQL Server 端口的 IPSEC 策略。这也可能导致您被屏蔽。
【讨论】:
【参考方案12】:确保为 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?有人会认为 *** 凭据将用于握手。我会检查您的帐户是否有适当的登录权限。
【讨论】:
【参考方案13】:连接到 *** 时,每条消息都通过 *** 服务器,它无法将您的消息转发到 SQL 服务器正在处理的端口。
试试
禁用***设置->属性->TCP/IP属性->高级->在远程网络上使用默认网关。
这样你会先尝试连接SQL服务器的本地IP,然后才使用***服务器转发给你
【讨论】:
救了我的命,伙计! :) 谢谢! :)【参考方案14】:当这种情况发生在我身上时,是因为 DNS 无法正常工作。尝试在 SQL Server 登录中使用 IP 地址而不是服务器名称。
【讨论】:
虽然我可以 ping 服务器,但我必须使用 IP 地址才能通过 *** 实际登录。【参考方案15】:SQL Server 使用 TCP 端口 1433。这可能被 *** 隧道或服务器上的防火墙阻止。
【讨论】:
【参考方案16】:您可能没有打开/*** 转发的 UDP 端口,它的端口号是 1433。
尽管客户端协议名称为“TCP/IP”,但 mssql 使用 UDP 进行 bitbanging。
【讨论】:
SQL Server 使用 udp/1434 返回有关如何连接到命名实例的信息。 SQL Server 使用 tcp 而不是 udp 进行客户端和服务器之间的所有实际通信。【参考方案17】:检查 SQL Server 正在使用的端口是否未被防火墙或 *** 阻止。
【讨论】:
以上是关于未通过 *** 连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008
从 Visual Studio 连接到 SQL Server 2005
如何连接到 Parallels VM 上的 SQL Server
我的sql server 2008不能登录,用windows和sa都无法登录 标题: 连接到服务器 ---------------------------