启动/停止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”:
代码如下 | 复制代码 |
View Code @echo off :a echo 本机的实例列表: echo --------------------------- echo 1 PC143SQL2005DE1 echo 2 PC143SQL2005DE2 echo 3 PC143SQL2005DE3 echo 4 PC143SQL2005DE4 echo 5 PC143SQL2005DE5 echo 6 PC143SQL2005DE6 echo 7 PC143SQL2005DE7 echo 8 PC143SQL2005DE8 echo 9 PC143SQL2005DE9 echo 10 PC143SQL2005DE10 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上其中一个实例服务PC143SQL2005DE4:
SQL2005DE4:
关闭实例服务,类似启动实例服务,如:
补充:数据库,Mssql