windows系统相对于linux有一个十分明显的坏处,如果长时间运行不进行重启的话,指不定那天他就会弄出点问题给你点颜色看看。目前管理的一台windows机器就是这样,大清早的收到nagios告警,对该机的检测提示Socket timeout 。先ping了下主机,发现是通过的,radmin和远程桌面都连不上。接着试了下布在该机上的web和其用应用,发现都无法使用。没办法,通知机房紧急重启吧。

出于安全的考量,没把登录密码给机房人员。直接让们按电源键强制物理重启了。重启过,发现主要是两种错误。一处是部分应用程序提示连接数据库失败;另一处是某应用直接点击启动,只在进程管理器里闪一下进程名,不到一分钟就又退出了。

错误一

由于出错的数据库是sqlserver,通过企业管理器进行连接。通过windows身份认证,成功登录。并发现查询表内容正常。而通过sql server身份验证登录时,提示如下:

1服务器:消息18452,    级别16,状态1
2[Microsoft][ODBC    SQL    Server    Driver][SQL    Server]用户‘sa’登陆失败.

通过重启系统再试,问题依旧。通过网上查询该问题,试了下重置sa密码,在原程序里输入新的密码,问题解决。用windows账号登录SQL查询分析器,执行以下语句:

1清空 'sa' 密码
2exec sp_password null,null,'sa'
3修改 'sa' 密码为 'newPassword'
4exec sp_password null,'newPassword','sa'

错误二

由于这几个程序不是公司开发的,都是第三方的。首先,找了第三方的售后。售后折腾了一番,最后告知:没折了,应该是系统问题,只能重装系统解决了。我了个去,不可能系统这么脆弱啊!其他应用程序跑的都还好好的。决定自己动手,封衣足食。先看下事件查看器中有没有应用程序相关的日志。看来运气有点好,果然有,如下:

错误应用程序 DC2DBF.exe,版本 1.0.32.0,错误模块 ntdll.dll,版本 5.2.3790.4937,错误地址 0x0004cd12。有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

eventlog

网上找了下,关于ntdll.dll的错误发现十分多。先试着重装注册ntdll.dll文件。

1regsvr32 C:\WINDOWS\system32\ntdll.dll

结果提示已加载ntdll.dll,但没有找高层次DllRegisterServer输入点。无法注册这个文件。算了,来了狠的,把system32下的所有文件都重新注册下。运行中输入cmd,在命令提示符下输入:for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1

重新启动DC2DBF.exe文件,发现问题依旧。接着在网上找方法,无意在瑞星卡卡论坛上看到有人回复说先清理下%temp%下的临时文件,并用瑞星修复下。瑞星?好几年都不知道这款杀软长什么样了。试着先清下临时文件吧。

在【开始】【运行】输入%temp% 点击确定(发现临时文件真不少,上万个)。全选——删除,发现有一些文件在被占用,无法完全清理。得了,改用脚本清理吧!

 1@echo off echo 正在清除系统垃圾文件,请稍等......
 2del /f /s /q %systemdrive%*.tmp
 3del /f /s /q %systemdrive%*._mp
 4del /f /s /q %systemdrive%*.log
 5del /f /s /q %systemdrive%*.gid
 6del /f /s /q %systemdrive%*.chk
 7del /f /s /q %systemdrive%*.old
 8del /f /s /q %systemdrive%recycled*.*
 9del /f /s /q %windir%*.bak
10del /f /s /q %windir%prefetch*.* rd /s /q %windir%temp & md %windir%temp
11del /f /q %userprofile%cookies*.*
12del /f /q %userprofile%recent*.*
13del /f /s /q "%userprofile%Local SettingsTemporary Internet Files*.*"
14del /f /s /q "%userprofile%Local SettingsTemp*.*"
15del /f /s /q "%userprofile%recent*.*"
16echo 清除系统LJ完成!
17echo. & pause 

在以前没有360的时代,大伙可都用这清理系统垃圾文件。现在都不大用的了,这次在服务器上又用到了,泪牛满面!处理完后,还有几个文件夹里的东西无法清理。任务管理器里关掉explorer.exe(桌面和任务栏会没掉。避免一些程序占用,该法对部分程序可能有用),再运行刚刚的脚本。运行完,手动再删除下,删不掉的暂时就先不管了。删完,运行里再输入explorer.exe回车。桌面和任务栏又回来了。再重试DC2DBF.exe文件。

结果奇迹出现了,程序竟神奇般的起来了。再次泪牛满面,在windows下,看来不能小瞧了垃圾文件清理的作用啊!