未通过 *** 连接到 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=YesEnabled=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的主要内容,如果未能解决你的问题,请参考以下文章

ODBC无法连接SQL SERVER

通过 ODBC 连接连接到 Sql Server CE

无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008

从 Visual Studio 连接到 SQL Server 2005

如何连接到 Parallels VM 上的 SQL Server

我的sql server 2008不能登录,用windows和sa都无法登录 标题: 连接到服务器 ---------------------------