通過批處理指令碼啟動/停止SQL Server服務

來源:互聯網
上載者:User

原因

 

      先說寫這篇文章的原因,這裡通過兩個簡單的案例說明。

      案例一:在一個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    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:

 

關閉執行個體服務,類似啟動執行個體服務,如:

 

 

 

小結

 

      上面的批處理指令碼,雖然代碼看似很長,其實格式很簡單,熟悉Windows批處理指令碼的朋友,一定能簡化它。啟動或停止執行個體的服務,還可以使用別的後台指令碼語言實現,如Windows PowerShell,或Python。無論使用哪一種,最終目的是要解決文章開頭的兩個案例問題。寫批處理指令碼,能讓我們少敲次鍵盤,少按幾次滑鼠。通過簡單的指令碼代碼實現,代替一些繁瑣笨拙的操作,久而久之,會發覺它們能為我們節省了不少的時間,提高了工作效率。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.