有没有开防火墙?sqlserver服务器-->开始菜单-->SQLserver-->服务器网络实用工具-->启用  WinSock代理-->代理地址:(sqlserver服务器IP)-->代理端口-->1433

解决方案 »

  1.   

    1.SQL Server服务器--开始--程序--Microsoft SQL Server
    --服务器网络实用工具
    --看看启用的协议中,有没有"TCP/IP"  如果没有的话,那就肯定不能用IP地址连接的,因为IP地址是使用TCP/IP协议的
      不启用TCP/IP就禁用了IP地址连接
    2.如果已经启用了TCP/IP,则在"服务器网络实用工具",点属性,看看默认端口是多少
      如果不是1433,则连接的时候要用: IP地址,端口号  做为sql服务器名来连接
    3.如果还是不行,检查你的TCP/IP协议是否工作正常,最好是删除重新安装一次
      一般的检查方法是:
      a.保证ping <服务器IP地址> 通(有防火墙的先关闭防火墙)
      b.在命令提示符下执行:telnet <服务器ip地址> 1433 不会报错4.可能是你和TCP/IP协议不是默认协议(当前使用的协议)  回复人: leimin(黄山光明顶) 
     
      在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置
    为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
    的顺序。你也可以在:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
    "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
    看到默认的协议。2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写?你可以在上面提到的注册表的位置修改:
    CLIENT端:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
    "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00SERVER端:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
    "ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
      

  2.   

    另外,检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行: select @@version
     如果出来的版本号是8.00.2039以下,则表明你未安装sp4的补丁,要装上.SQL补丁下载:
    全部补丁的位置(在下载页的中间部分,可以选择语言,以下载和sql server实例语言对应的补丁)
    http://www.microsoft.com/downloads/details.aspx?FamilyId=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5&displaylang=zh-cn
    应该安装的是
    http://download.microsoft.com/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9cb9338/SQL2000-KB884525-SP4-x86-CHS.EXE
    注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装
    如果你的操作系统是xp,那么在安装xp sp2后,不管以前是否安装过sql sp4,都要再安装一次,并且在防火墙中开启1433端口,否则无法被其他电脑访问
      

  3.   

    本文介绍通过防火墙与 SQL Server 进行通信所需的最少的 TCP/IP 端口。
    更多信息
    SQL Server 是 Winsock 应用程序,它使用套接字网络库通过 TCP/IP 进行通信。SQL Server 侦听特定端口上的传入连接;SQL Server 的默认端口是 1433。该端口不必是 1433,但 1433 是用于 SQL Server 的正式 Internet 号码分配机构 (IANA) 套接字编号。客户端应用程序使用客户端网络库 Dbmssocn.dll(对于 SQL Server 2000 则为 Dbnetlib.dll)与 SQL Server 通信,并且使用 Microsoft 数据访问组件 (MDAC) 2.6 与任何客户端通信。在客户端建立 TCP/IP 连接时,执行三向的握手。客户端打开一个源端口并向目标端口(默认情况下是 1433)发送通信量。使用中的客户端源端口是随机的,但它大于 1024。默认情况下,在应用程序从系统为传出呼叫请求套接字时,提供介于值 1024 和值 5000 之间的端口。有关更多信息,请参见以下 Microsoft Developer Network (MSDN) Web 站点中的"Microsoft Windows 2000 TCP/IP Implementation Details"(Microsoft Windows 2000 TCP/IP 实施详细信息)。
    http://www.microsoft.com/windows2000/techinfo/howitworks/communications/networkbasics/tcpip_implement.asp 
    服务器(在此例子中为 SQL Server)然后通过将来自 1433 的通信量发送回该客户端建立的端口,与该客户端进行通信。观察此行为的最佳方式是通过使用 Microsoft 网络监视器或网络嗅探器工具,跟踪客户端与服务器之间的通信。若要配置防火墙,您必须允许从 *ANY* 到 1433 的通信量,以及从 1433 到 *ANY* 的通信量,其中 *ANY* 是大于 1024 的端口。
    *ANY* -> 1433 
    1433 -> *ANY* 
    除了使用 Microsoft 网络监视器外,您还可以使用 TCP/IP Netstat 实用工具对此进行阐释。通过从 MS-DOS 命令窗口发布 netstat -an,可以生成以下结果,显示已建立的与 SQL Server 的三个连接。此示例使用 157.54.178.42 作为 SQL Server的 IP 地址,使用 157.54.178.31 作为客户端 IP 地址。客户端打开的端口分别是 1746、1748 和 1750。 
    Proto   Local Address          Foreign Address        State
    TCP    157.54.178.42:1433     0.0.0.0:0              LISTENING
    TCP    157.54.178.42:1433     157.54.178.31:1746     ESTABLISHED
    TCP    157.54.178.42:1433     157.54.178.31:1748     ESTABLISHED
    TCP    157.54.178.42:1433     157.54.178.31:1750     ESTABLISHED
    防火墙软件应该通过使用规则允许进行此动态分配。如果它允许进行此动态分配,则您可以配置已建立的 1433 -> *ANY*;这将通过全状态的数据包检查,在后随 syn/ack(同步/确认)的 syn(同步)后动态打开响应端口。 没有任何方法可以限制用于要连接的 SQL Server 客户端的源 TCP 端口的数目;因此,客户端将不必分配新的、不使用的动态端口。这是为 Winsock 应用程序定义的 TCP/IP 标准,而不是 SQL Server 客户端通信的限制。此外,SQL Server 2000 的命名的实例默认情况下将使用动态目标端口。此端口应在配置防火墙前更改为固定端口。应使用 SQL Server Network 实用工具来配置目标端口。有关如何使用 SQL Server 网络实用工具的信息,请参见"SQL Server 联机图书"。否则,客户机必须打开随机的 UDP 端口,并且将使用服务器 UDP 端口 1434 来发送实例名称;如果该实例是群集的,则发送 SQL 实例的版本、该实例正侦听的 TCP 端口号以及该实例正使用的命名的管道。但是,如果目的在于使防火墙上打开的端口的数目降至最低,则应选择静态的端口号来用于默认的实例和任何命名的实例。必须配置客户机,以连接到特定的 ServerName 或 ServerName 实例以及特定的端口号。
      

  4.   

    验证 SQL Server 实例正在正确地侦听
    要验证 SQL Server 实例正在正确地侦听命名管道、TCP/IP 或您在客户端应用程序中使用的其他协议,请打开当前的 SQL Server 错误日志文件。SQL Server 错误日志文件可能包括与以下类似的条目:2003-11-06 09:49:36.17 server SQL server listening on TCP, Shared Memory, Named Pipes.
    2003-11-06 09:49:36.17 server SQL server listening on 192.168.1.5:1433, 127.0.0.1:1433.
    通过分析 SQL Server 错误日志文件中的条目,可以验证 SQL Server 实例是否正在侦听正确的 IP 地址和端口。在默认情况下,一个默认的 SQL Server 实例侦听端口 1433。您还可以使用服务器网络实用程序来验证 SQL Server 的协议设置并更改 SQL Server 中的属性,包括可以连接到 SQL Server 和可以使用的端口的协议。关于使用服务器网络实用程序的更多信息,请参见 SQL Server 在线参考书中的“SQL Server 网络实用程序”专题。有时候,SQL Server 2000 可能不会绑定于端口 1433 或任何其他指定的端口。如果端口正被其他应用程序使用,或者如果您正在尝试使用一个错误的 IP 地址进行连接,就可能会出现此问题。因此,TCP/IP 到 SQL Server 的连接可能不成功,在 SQL Server 错误日志中您会收到下列错误信息:
    2001-11-14 15:49:14.12 server SuperSocket Info:Bind failed on TCP port 1433.
    有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
    307197 PRB:TCP\IP 端口正由另一应用程序使用 
    如果通过 TCP/IP 连接您不能连接到 SQL Server 实例,请尝试使用命名管道协议或共享内存协议。在命令提示符下运行下面的命令,以获取关于正在使用的端口的信息:NETSTAT -an
    您还可以使用 Portqry 命令行实用程序来获取关于正在使用的端口的更多信息。
      

  5.   

    逐个检查啊。外网是走tcp/ip协议的,当然就要求启用tcp/ip网络库。 而TELNET 外网IP 1433 根本就不通,问题就在这里了。方法已经告诉你了,你应该去尝试吧。
      

  6.   

    不就是TCP/IP吗?服务器和客户端的协议都是TCP/IP呀
      

  7.   

    你照大家提示你的步骤去逐步检查不好么? 我当然知道是用tcp/ip协议,可那个是网络协议
      

  8.   

    可服务器在威海,我没法亲自找呀!
    你所指的协议是什么?难道不是TCP/IP吗?