最近测试发现两个问题:开启服务器的防火墙,并打开1234端口,同时设置SQLSERVER端口为12341、
客户端用SSMS连接时,如果不输入端口号,则无法连接,但是如果客户端用SQLCMD连接时,不输入端口后也可以连接;
但是如果此时关闭服务器端的防火墙,SSMS可以不输入端口依然可以连接;
不输入端口号就可以连接,这是一种怎样的过程呢?而为什么sqlcmd不管是否开启防火墙,都可以不输入端口号呢?2、netstat -b -n 可以查看端口以及进城相管信息
   如果用服务器端的SSMS连接时(不输入端口号),则netstat -b -n不会显示出有SQLSERVER的端口号正在使用的情况
   如果用服务器端的SSMS连接时(输入端口号),则netstat -b -n会显示出有SQLSERVER的端口号正在使用的情况就这两种情况,希望能够给予解释一下!   

解决方案 »

  1.   

    1.共享内存或命名管道连接.
    2.输入端口号时是TCP/IP,要用端口,不输入时,通过共享内存或命名管道连接时不用端口.
      

  2.   

    你可以到配置管理器的sql Native Client配置中看到.
      

  3.   

    对了,还延伸出来一个问题,SQLSERVER的客户端协议我感觉没有用,即使将其全部禁用掉,我用SSMS输入”别名“或直接输入“服务端的地址”也可以正常访问。
      

  4.   

    不需要客户端协议,客户端同样可以访问服务器端,只要服务器端开启了相应的协议即可,为什么呢?就好比c#访问服务器端的sqlserver一样,客户端值安装了.net,但是并没有安装SQLSERFE的客户端组件,同样能够访问服务器端,为什么呢?