ITPub博客

记一次sql server 数据库sa用户无法登录的故障处理

原创 作者:贺子_DBA时代 时间:2016-08-04 00:34:01 0 删除 编辑
故障现象:
用服务器上面的(客户端)sql server management  stutio 去连接本服务器上的sql server 数据库,如下图:点击连接不报任何错,就是连接不上,一直处于等待状态;

但是通过windows 身份验证是可以连接的,并且是可以正常操作的,如下图:服务器名字不在是个IP,要选择local.


通过这个现象可判断出 数据库本身的服务(通过任务管理器中也可以看出来)是没有问题,只是连接方面出现问题:网络,端口或者是监听之类的问题。



这是网上查到的一篇文档:经验证我的这里是 没有这个问题,

初次安装sql server 2008以后,连接到服务器时选择【身份验证】为【SQL Server身份验证】,登录名为sa,结果提示“用户名sa登录失败”,经过一番折腾,终于解决了这个问题,下面说说具体的做法。


首先选择【Windows身份验证】模式连接数据库引擎。




点中实例,然后右键单击,选择【属性】,进入【服务器属性】界面。在左侧选择页中点击【安全性】,然后在右侧安全性设置界面的【服务器身份验证】一栏中选择【SQL Server和Windows身份验证模式】,点击【确定】按钮。







完成上述步骤之后,再次连接还是不能成功。这是因为初次使用登录名sa,此时sa还处于【禁用】状态。点开【安全性】【登录名】,找到登录名sa。


右键单击,选择【属性】,进入【登录属性-sa】界面。在【登录属性-sa】界面的右侧,可以设置sa的登录密码,设置密码时要取消对【强制实施密码策略】的勾选。


在【登录属性-sa】界面中,点击左侧选择页中的【状态】,然后在右侧出现的状态界面中将【登录】设置为【启用】,点击【确定】。先断开连接,然后再选择【SQL Server身份验证模式】进行连接,即可成功。



继续查看问题所在:

我们知道一个用户连接任何服务都需要端口,查看端口信息


有些时候在Windows下运行程序的时候经常会因为端口被占用而无法运行,而Windows下没有直接查看端口的方法

下面展示具体查看过程:

  1. 在开始-运行,输入CMD打开命令行界面,输入命令

    netstat -ano | findstr "80" (注80是你想要看查看的端口号)

    就会输出包含80端口使用的情况

    具体对应的行是

    协议    本地地址        外部地址          状态          PID


  2. 如果想看某个进程具体是哪个进程可以使用下面命令

    tasklist | findstr "5584"(注 5584是进程的id即PID)

    如何查看Windows下端口占用情况



       3.  结束该进程

         C:\>taskkill /f /t /im  httpd.exe

但是我这里并没有被占用的情况;继续排查:

当我执行netstat -ano 的时候,输出大量信息。而我们这台服务器仅仅是跑着一个考勤系统业务。 会不会是端口被占没有呢???
windows一共是65535个端口,并且发现进程号为0   ,也就是说这是系统进程号,还不能kill, 系统不能自动回收端口资源,本来状态为time_wait的端口是可以被回收的,可是现在不回收了,出现了BUG,这台服务器已经运行了300多天,据说window长时间不重启会出现问题。。。。。




于是得出解决办法:重启这台服务器,经领导同意,首先关掉上面跑的服务,然后重启了这台服务器,问题解决。。。。。。。。

请登录后发表评论 登录
全部评论

注册时间:2014-05-12

  • 博文量
    214
  • 访问量
    1485450