停MS SQL Server服务失败原因及解决方法 |
[
作者:aluo 转贴自:阿骆精帖网 点击数:1089 更新时间:2013-1-7 帖子录入:admin
]
|
有任何建议、疑问请给本站留言
工作中又遇到了一个奇怪的错误,自己写的小工具提示停SQL Server服务失败! 2013.1.6日晚上22:25重新几次启动小工具都提示停数据库服务失败,另外由于家用联通ADSL手机远程登录单位电信线路的机器慢,决定放到7日凌晨再手工做该小工具自动完成的任务,问题原因待上班后再细查。 最终在凌晨3:25左右开始用小米手机在被窝里(天太冷了室外冷5-6度)手动把小工具该代劳的工作,大概4:30左右做完,说实话凌晨的网络真叫一个快啊,就像互联互通问题从未发生过一样,什么时候能实现网速白天也这样啊? 在7日进行查原因时发现无论小工具配置参数,还是小工具源码上都未查到具体原因,不过突然想到6日晚22点时发现sqlserverAgent服务仍在运行,会不会与其有联系呢?做个测试就知道了,而且实验环境也具备,在本机打开sql server服务(开始-运行-cmd-回车-sc start mssqlserver,然后再打开SqlServerAgent服务,接着在命令提示符下运行sc stop mssqlserver,运行结果正常情况下该显示字符类似 state : 3 STOP_PENDING,可是这次显示的字符却时之前从未遇到过的[SC] ControlService 失败 1051: 停止控制被发送到其他正在运行的服务所依赖的服务? 这时心中的疑问豁然开朗,问题就出在这里,小工具里执行的是 sc stop mssqlserver 来停止MSSQLServer服务,在写小工具时没有考虑到SQLServerAgent服务运行的情况,小工具也茫然了故提示停止SQLServer服务失败。故在执行sc stop mssqlserver服务前需要先停sqlserveragent服务。想到停IIS Admin Service服务时经常用的命令net stop iisadmin /y 能不能用net stop mssqlserver /y呢?启动SQLServerAgent服务,再运行net stop mssqlserver /y 发现该命令成功地停掉了MSSQLServer服务,过程是先停SQLServerAgent服务,然后停MSSQLServer服务。原来是因为SQLServerAgent服务依赖于MSSQLServer服务,若不加参数 /y 则会提示 停止 MSSQLSERVER 服务也会停止这些服务。 SQLSERVERAGENT 是否继续此操作? (Y/N) [N]: 等字符 于是小工具可以有以下改善:1、修改源码将 sc stop mssqlserver 改为 net stop mssqlserver /y ,将对应的判断返回字符也做相应修改即可; 2、不修改sc stop mssqlserver 而是判断其执行后返回的字符若失败则执行sc stop SQLServerAgent待成功后再执行sc stop mssqlserver;注:前提是小工具完成它的任务后SQLServerAgent服务不再使用,SQLServerAgent服务还要使用则记得小工具完成任务后奖其再启动
另外SQL Server 服务管理器中另外两个服务MSDTC和MSSearch不依赖MSSQLServer服务见上图,故执行sc stop mssqlserver时不必考虑!
|
|
Tags: MSSQLServer, ADSL, SQLServerAgent, SC, 互联互通 |
|
|
|