我试图连接到一台机器上的SQL实例(默认实例)。 当使用机器的IP连接到机器时。 使用该机器上的机器名称可以build立到SQL实例的连接,但是在另一台PC上使用机器名称则无法build立连接。 并给出错误
A network-related or instance-specific error occurred while establishing a connection to SQL Server. ... (Microsoft Server, Error: 10060)
我试图build立连接的机器可以用IP实例和名称上的SQL实例来ping机器。 为什么会这样,我该如何解决?
编辑:ping的名字确实解决了正确的IP。 Ping FQDN也能正常工作。
[原创]您用于连接到服务器的DNS名称可能无法parsing到托pipe该实例的IP。 您可以通过使用nslookup来parsing名称并validation它是否parsing为您在SQL服务器上configuration的实例IP地址。
除此之外,tas @ mrdenny提到,可能有一种基于networking的防火墙,或者一个基于主机的[/原始]
编辑1:通过名称看到了关于ping的一点…是否正在ping的名称实际上parsing为托pipeSQL实例的服务器?
编辑2:您创build的命名实例可能被configuration为为侦听器使用唯一不同的 TCP端口。 您的基于IP的侦听器可能在默认端口上,但命名实例可能正在侦听下一个端口或其他任意定义的端口。
此外,在SQLconfigurationpipe理器中,validation命名实例服务正在运行…
这听起来像是防火墙已启用,或SQL Server未configuration为允许远程连接。
防火墙可以通过控制面板进行configuration。 SQL Server可以configuration为支持通过SQL Serverconfigurationpipe理器的远程连接。
一旦确认SQL正在侦听TCP端口,就可以通过从客户端机器Telnet到端口1433上的SQL端口号来testing它是否足够容易。
经过更多的调查后,问题的原因是机器名称被添加为正确的机器的IP别名,但监听端口2305而不是1433.将其更改为1433解决了这个问题。
打开cmd提示符并写下:
notepad C:\Windows\System32\drivers\etc\hosts
这将使用记事本打开名为Hosts的文件。
添加一个如下所示的条目:
[Machine_IP] [Press Tab] [Full Machine Name]
例如,如果我的IP是10.10.3.222和我的机器的FQDN是:WinServer-L2Lab.contoso.com
# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 10.10.3.222 WinServer-L2Lab.contoso.com
保存文件。 并尝试连接。
这看起来像名称parsing问题。
你说你可以使用它的名字来ping SQL服务器; 好的,但请仔细检查一下。
尝试ping SQL服务器的FQDN( servername.domain.com ,而不是仅servername )。 这是否工作? 它实际上是ping通服务器的IP地址,还是ping另一个?
然后,尝试在没有域后缀的情况下ping服务器的名称(因此,仅servername )。 这是否工作? 它是否ping通服务器的IP地址? 它是否自动parsing到服务器的FQDN( servername.domain.com ),还是按请求( servername )保留?
这里有几个可能的问题:或者名称映射到DNS中的错误服务器,或者DNS不工作,NetBIOS用于parsing名称(这也可能映射到错误的服务器)。 上面的testing应该澄清这一点。 请尝试一下,然后发布你的结果。