常见的数据库连接问题无外乎是在数据库服务器本地可以连接SQL Server,但通过其他服务器就不可以连接。但这次我却碰到了相反的情况,在服务器本地无法通过IP/实例名连接,但从其他服务器却可以。而且每次重启后问题短暂消失,不多久后,又重现。我还是第一次碰到这样的问题。通过深究后找到了根本原因:竟然是某杀毒软件惹的祸。。。。。

报错截图

下面分享下我的排错过程:

一.本地使用IP/实例名无法访问服务器,但通过机器名可以;

我们知道,使用IP/实例名访问SQL Server时所采用的协议与使用机器名或者"."是不一样的,前者是通过SQL Server的TCP/IP方式访问,后两者是通过命名管道的方式访问,既然命令管道的方式可以访问,说明数据库用户没有被禁用或者没有被拒绝远程连接,而且问题应该在tcp/ip上,也就是说这应该是一个网络问题,而不是SQL Server的配置问题。

二.外部机器可以连接进来,也可以telnet DB服务器IP的1433端口;

这说明DB服务器的防火墙应该没有问题,再说,防火墙是防外不防内,内部不能访问肯定跟防火墙没有关系。

另外,我在其他服务器和DB服务器上的cmd中执行netstat -ano|findstr 1433,可以看到实际上两台服务器建立了tcp连接;

三.在数据库服务器本地telnet 1433端口,telnet不成功;

分析到这里的时候,我突然想起来了之前处理的一个问题,就是服务器本地的使用的tcp端口太多了,达到了上限(65536),导致应用程序新的TCP请求没法分配到TCP端口,因此无法网络通讯。这个现象跟这个情况很类似,数据库服务器本地发起数据库连接时,SSMS要分配一个本地的随机TCP端口,如果端口不够用了,肯定就不能连接SQL Server了,至于外部机器为什么能够连接进来,是因为他们使用的是自己的TCP端口来连接SQL Server的1433端口,并不需要数据库服务器单独再开TCP端口。

根据这个思路,我通过tcpview查看数据库服务器的端口使用情况,结果令我失望了,竟然很正常,难道是我判断出错了,可是按照现象应该就是这样的呀,无意中看到服务器右下角某数字公司的安全卫士,豁然开朗,安全软件经常干影响网络通讯的事情,将其卸载后一切正常。。。。。

PS:本文并不是黑某杀毒软件,只是想说市面常见的这些防护软件这都是为个人电脑设计的,服务器的使用情况跟个人电脑有很大不同,请不要轻易在服务器上安装杀毒软件,以免带来一些意想不到的坏影响。

我为什么很烦在DB服务器上安装杀毒软件的更多相关文章

  1. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

  2. 在Windows Server 2012服务器上安装可靠多播协议

    为什么要安装可靠多播协议?   答:随着因特网的发展,出现了视频点播.电视会议.远程学习.计算机协同工作等新业务.传统的点到点通信方式,不仅浪费大量的网络带宽,而且效率很低.一种有效利用现有带宽的技术 ...

  3. 线上服务器上安装的VNCServer不能正常工作

    1.问题描述: 线上服务器上安装的不能正常工作 2.解决问题过程: 一. 重启vncserver 运行命令:vncserver -kill :1和vncserver :1 二. 发现vncserver ...

  4. 极简】如何在服务器上安装SSL证书?

    本文适合任何人了解,图形化操作.下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板. 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待腾讯 ...

  5. 在 Ubuntu 18.04 LTS 无头服务器上安装 Oracle VirtualBox

    作者: Sk 译者: LCTT qhwdw | 2018-10-12 01:59 本教程将指导你在 Ubuntu 18.04 LTS 无头服务器上,一步一步地安装 Oracle VirtualBox. ...

  6. Shell脚本实现超简洁的在Linux服务器上安装nginx、resin、java、tomcat、redis等程序

    说明: 用平常的方式在Linux服务器上安装程序,需要下载安装包.进入安装包位置.给安装包文件赋予可执行权限.执行安装.设置环境变量--等等一系列复杂的操作.并且如果有关联也需要一个一个的挨着安装.耗 ...

  7. 阿里云服务器上安装mysql的心路历程(博友们进来看看哦)

    在阿里云花了100买了一台云服务器,配置如下: CPU: 1核 内存: 512MB 数据盘: 0G 带宽: 1Mbps 阿里云服务器安装mysql搞得我想吐血,搞了一个多星期,现在才搞好,而且,还有许 ...

  8. 安装VMware vSphere 的目的就是在一台物理服务器上安装很多很多的虚拟机

    版权声明:本文为博主原创文章,未经博主允许不得转载. 我们安装VMware vSphere 的目的就是在一台物理服务器上安装很多很多的虚拟机,我们可以通过VMware vSphere Client直接 ...

  9. 在阿里云Linux服务器上安装MySQL

    申请阿里云Linux服务器 昨天在阿里云申请了一个免费试用5天的Linux云服务器. 操作系统:Red Hat Enterprise Linux Server 5.4 64位. CPU:1核 内存:5 ...

随机推荐

  1. 第三十三篇:使用uiresImporter生成uires.idx及skin.xml

    在SOUI中,使用uires.idx这个文件来记录程序中使用的所有资源文件. 此外绘制对象(ISkinObj)则一般放在skin.xml中描述. 要向一个界面中增加一个新的图片,在没有uiresImp ...

  2. UWP学习记录1-开端

    UWP学习记录1-开端 1.背景 针对不同基础的人,学习的路线自然是不同的.这篇文章记录的是我个人的学习路线,或者说笔记.我对自己的技术状态的定义是: A.有很好的windows平台编程基础: B.有 ...

  3. 责任链模式/chain of responsibility/行为型模式

    职责链模式 chain of responsibility 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处 ...

  4. Console app 里的依赖注入及其实例生命周期

    依赖注入是 ASP.NET Core 里的核心概念之一,我们平常总是愉快地在Startup类的ConfigureServices方法里往IServiceCollection里注册各种类型,以致有一些同 ...

  5. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  6. flume+kafka+spark streaming整合

    1.安装好flume2.安装好kafka3.安装好spark4.流程说明: 日志文件->flume->kafka->spark streaming flume输入:文件 flume输 ...

  7. EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

    软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...

  8. php 二位数组按某个键值排序

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

  9. 转行|如何成为企业想要的Android工程师

    没经验 一来没钱 二来没时间 三来投简历没人要 四来就算忽悠进去了,也做不了,亚历山大,迟早被踢 1.做好手上的工作 不要裸辞 忌讳心猿意马的心态,当有两个选择的时候,往往 所以要专注于当下手头上唯一 ...

  10. Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    解决方案 docker-machine restart&&eval "$(docker-machine env default)"&&docker- ...