批处理脚本,通过批处理脚本启动/停止SQL Server服务

原因


先说写这篇文章的原因,这里通过两个简单的案例说明。
案例一:在一个Windows操作系统中,安装有10个SQL Server实例,每一个实例存在大约120个数据库。现在要同时启动10个实例的服务(SQL Server & SQL Server Agent & SQL Server FullText Search)。通过SQL Server Configuration Manager,需要一个实例,一个服务的一一启动。那是多么繁琐、笨拙的操作。
案例二:在案例一的场景,启动了全部的实例。不久,就发现程序运行缓慢,即使在Microsoft SQL Server Management Studio(MSMS)管理器查询数据,都有如蜗牛爬树。这时候,需要关闭一些暂时不用的SQL Server实例的服务。等需要的时候再启动。一些时候,可能会碰到经常要关闭这个实例的服务,启动另外实例的服务,以便解决Windows系统资源紧张的问题。
解决


解决上面案例繁琐的操作问题,可以考虑通过Net命令,来启动或停止各个SQLServer服务,如:
net Start SQLAgent$SQL2005DE1 /*启动实例SQL2005DE1中的SQLAgent服务*/
net Stop SQLAgent$SQL2005DE1 /*停止实例SQL2005DE1中的SQLAgent服务*/
根据Net命令,可以通过编写一个批处理脚本实现,启动各个实例的各服务。Copy下面的代码,存储为后缀名为Bat的批处理文件“Start&StopSQLServer.bat”:
通过批处理脚本启动/停止SQL Server服务批处理脚本通过批处理脚本启动/停止SQL Server服务批处理脚本View Code @echo off :a echo 本机的实例列表: echo --------------------------- echo 1 PC143\SQL2005DE1 echo 2 PC143\SQL2005DE2 echo 3 PC143\SQL2005DE3 echo 4 PC143\SQL2005DE4 echo 5 PC143\SQL2005DE5 echo 6 PC143\SQL2005DE6 echo 7 PC143\SQL2005DE7 echo 8 PC143\SQL2005DE8 echo 9 PC143\SQL2005DE9 echo 10 PC143\SQL2005DE10 echo --------------------------- echo 操作动作: echo 1 启动服务 echo 0 停止服务 echo --------------------------- echo. Set/p var2=请输入操作动作:[1/0] Set/p var1=请输入实例编号:[1/2/3/4/5/6/7/8/9/10] if %var1% ==1 if %var2% ==1 goto S1 if %var1% ==2 if %var2% ==1 goto S2 if %var1% ==3 if %var2% ==1 goto S3 if %var1% ==4 if %var2% ==1 goto S4 if %var1% ==5 if %var2% ==1 goto S5 if %var1% ==6 if %var2% ==1 goto S6 if %var1% ==7 if %var2% ==1 goto S7 if %var1% ==8 if %var2% ==1 goto S8 if %var1% ==9 if %var2% ==1 goto S9 if %var1% ==10 if %var2% ==1 goto S10 if %var1% ==1 if %var2% ==0 goto T1 if %var1% ==2 if %var2% ==0 goto T2 if %var1% ==3 if %var2% ==0 goto T3 if %var1% ==4 if %var2% ==0 goto T4 if %var1% ==5 if %var2% ==0 goto T5 if %var1% ==6 if %var2% ==0 goto T6 if %var1% ==7 if %var2% ==0 goto T7 if %var1% ==8 if %var2% ==0 goto T8 if %var1% ==9 if %var2% ==0 goto T9 if %var1% ==10 if %var2% ==0 goto T10 echo. cls goto a: echo. :S1 net Start SQLAgent$SQL2005DE1 /Y net Start msftesql$SQL2005DE1 /Y goto EndApp echo. :S2 net Start SQLAgent$SQL2005DE2 /Y net Start msftesql$SQL2005DE2 /Y goto EndApp echo. :S3 net Start SQLAgent$SQL2005DE3 /Y net Start msftesql$SQL2005DE3 /Y goto EndApp echo. :S4 net Start SQLAgent$SQL2005DE4 /Y net Start msftesql$SQL2005DE4 /Y goto EndApp echo. :S5 net Start SQLAgent$SQL2005DE5 /Y net Start msftesql$SQL2005DE5 /Y goto EndApp echo. :S6 net Start SQLAgent$SQL2005DE6 /Y net Start msftesql$SQL2005DE6 /Y goto EndApp echo. :S7 net Start SQLAgent$SQL2005DE7 /Y net Start msftesql$SQL2005DE7 /Y goto EndApp echo. :S8 net Start SQLAgent$SQL2005DE8 /Y net Start msftesql$SQL2005DE8 /Y goto EndApp echo. :S9 net Start SQLAgent$SQL2005DE9 /Y net Start msftesql$SQL2005DE9 /Y goto EndApp echo. :S10 net Start SQLAgent$SQL2005DE10 /Y net Start msftesql$SQL2005DE10 /Y goto EndApp echo. :T1 net Stop MSSQL$SQL2005DE1 /Y net Stop msftesql$SQL2005DE1 /Y goto EndApp echo. :T2 net Stop MSSQL$SQL2005DE2 /Y net Stop msftesql$SQL2005DE2 /Y goto EndApp echo. :T3 net Stop MSSQL$SQL2005DE3 /Y net Stop msftesql$SQL2005DE3 /Y goto EndApp echo. :T4 net Stop MSSQL$SQL2005DE4 /Y net Stop msftesql$SQL2005DE4 /Y goto EndApp echo. :T5 net Stop MSSQL$SQL2005DE5 /Y net Stop msftesql$SQL2005DE5 /Y goto EndApp :T6 net Stop MSSQL$SQL2005DE6 /Y net Stop msftesql$SQL2005DE6 /Y goto EndApp :T7 net Stop MSSQL$SQL2005DE7 /Y net Stop msftesql$SQL2005DE7 /Y goto EndApp :T8 net Stop MSSQL$SQL2005DE8 /Y net Stop msftesql$SQL2005DE8 /Y goto EndApp :T9 net Stop MSSQL$SQL2005DE9 /Y net Stop msftesql$SQL2005DE9 /Y goto EndApp :T10 net Stop MSSQL$SQL2005DE10 /Y net Stop msftesql$SQL2005DE10 /Y goto EndApp :EndApp Set/p var3=是否继续操作:[y/n] If %var3% == y goto a:

这里演示了PC143上的10个SQL Server实例启动、停止的批处理脚本。下面来运行这个脚本,启动PC143上其中一个实例服务PC143\SQL2005DE4:
image通过批处理脚本启动/停止SQL Server服务批处理脚本
关闭实例服务,类似启动实例服务,如:
imageimage通过批处理脚本启动/停止SQL Server服务批处理脚本

小结


上面的批处理脚本,虽然代码看似很长,其实格式很简单,熟悉Windows批处理脚本的朋友,一定能简化它。启动或停止实例的服务,还可以使用别的后台脚本语言实现,如Windows PowerShell,或Python。无论使用哪一种,最终目的是要解决文章开头的两个案例问题。写批处理脚本,能让我们少敲次键盘,少按几次鼠标。通过简单的脚本代码实现,代替一些繁琐笨拙的操作,久而久之,会发觉它们能为我们节省了不少的时间,提高了工作效率。
Tags:  启动服务的批处理 批处理启动程序 批处理启动服务 批处理停止服务 批处理脚本

延伸阅读

最新评论

发表评论