首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 服務啟動/停止切換 BAT 腳本:sc query 狀態判斷 + net start/stop

     編輯:關於SqlServer

簡單實用的批次檔,自動偵測 SQL Server 服務(預設執行個體 MSSQLSERVER)目前狀態:**運行中則停止並設為手動啟動**;**已停止則啟動並設為手動**。適合快速重啟、維護視窗切換。

腳本內容 (儲存為 ToggleSQLService.bat)

@echo off
for /f "skip=3 tokens=4" %%i in ('sc query MSSQLSERVER') do set "zt=%%i" & goto :next

:next
if /i "%zt%"=="RUNNING" (
    echo 已發現服務正在運行,開始停止...
    net stop MSSQLSERVER
    echo sc config MSSQLSERVER start= demand  設定為手動啟動
) else (
    echo 服務目前處於停止狀態,開始啟動...
    echo sc config MSSQLSERVER start= demand  設定為手動啟動
    net start MSSQLSERVER
)
pause

關鍵說明

  • sc query MSSQLSERVER:查詢服務狀態,第 4 行第 4 欄為 RUNNING/STOPPED。
  • skip=3 tokens=4:跳過前 3 行標題,取第 4 欄狀態值。
  • net stop/start:標準服務控制命令,需**系統管理員權限**執行。
  • sc config ... start= demand:設為**手動啟動**(demand),避免意外自動啟動;原腳本寫 DISABLED 會導致無法 net start,此處已修正。
  • 具名實例:服務名稱為 MSSQL$InstanceName,請自行替換腳本中的 MSSQLSERVER。

進階版:支援參數化實例名稱、狀態碼返回

@echo off
set INST=%1
if "%INST%"=="" set INST=MSSQLSERVER

for /f "skip=3 tokens=4" %%i in ('sc query %INST%') do set "ST=%%i" & goto :CHK
:CHK
if /i "%ST%"=="RUNNING" (
    net stop %INST%
    sc config %INST% start= demand
    exit /b 0
) else if /i "%ST%"=="STOPPED" (
    sc config %INST% start= demand
    net start %INST%
    exit /b 1
) else (
    echo 未知狀態: %ST%
    exit /b -1
)

用法:ToggleSQLService.bat MSSQL$PROD,返回碼 0=已停止、1=已啟動、-1=異常。

注意事項

  • 必須以**系統管理員身分執行** (UAC 提權)。
  • 叢集環境/AlwaysOn 節點請使用叢集資源管理 (cluster res/FailoverClusters PowerShell) 而非本地 net stop。
  • 生產環境服務控制建議納入變更管理流程,保留審計軌跡。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved