Help us understand the problem. What is going on with this article?

SQL Server関連のサービスの開始・終了を行うバッチ

はじめに

自宅のPCに SQL Server 2017 Express をインストールすると SQL Server 関連サービスが自動で開始されてしまう。
SQL Server を必要としない場合はメモリを節約したいので、サービスが自動で起動しないように設定し、必要なときにだけサービスを開始させたい。サービスを開始させたいときに1つ1つのサービスを手動で開始させると手間がかかるのでバッチプログラムを作成した。また、サービスを停止させるバッチプログラムも作成した。

ソースコード

SQL Server関連サービスを開始するバッチプログラム

※次のバッチを実行するためには管理者権限が必要です。

start_sql_server.bat
@echo off
setlocal
call :Main %*
endlocal & exit /b %errorlevel%

rem ----------------------------------------------------------------------------
rem  Initialize
rem ----------------------------------------------------------------------------
:Initialize

    rem SQL Serverのインスタンス名
    set SQL_SERVER_INSTANCE_NAME=SQLEXPRESS

    rem SQL Server関連のサービス
    set SERVICE_LIST=
    set SERVICE_LIST=%SERVICE_LIST%  MSSQL$%SQL_SERVER_INSTANCE_NAME%
rem set SERVICE_LIST=%SERVICE_LIST%  MSSQLFDLauncher$%SQL_SERVER_INSTANCE_NAME%
rem set SERVICE_LIST=%SERVICE_LIST%  SQLAgent$%SQL_SERVER_INSTANCE_NAME%
rem set SERVICE_LIST=%SERVICE_LIST%  SQLTELEMETRY$%SQL_SERVER_INSTANCE_NAME%
rem set SERVICE_LIST=%SERVICE_LIST%  SQLBrowser
rem set SERVICE_LIST=%SERVICE_LIST%  SQLWriter

    exit /b

rem ----------------------------------------------------------------------------
rem  Main
rem ----------------------------------------------------------------------------
:Main

    call :Initialize

    for %%i in (%SERVICE_LIST%) do call :Start_Service %%i

    echo.
    pause
    exit /b 0

rem ----------------------------------------------------------------------------
rem  Start_Service
rem ----------------------------------------------------------------------------
:Start_Service

    sc query "%~1" | findstr STATE | findstr RUNNING > nul

    if "%errorlevel%"=="0" (
        echo サービス %~1 は既に開始しています。
        exit /b 1
    )

    net start "%~1"

    if not "%errorlevel%"=="0" (
        echo サービス %~1 の開始に失敗しました。
        exit /b 2
    )

    exit /b 0

SQL Server関連サービスを停止するバッチプログラム

※次のバッチを実行するためには管理者権限が必要です。

stop_sql_server.bat
@echo off
setlocal
call :Main %*
endlocal & exit /b %errorlevel%

rem ----------------------------------------------------------------------------
rem  Initialize
rem ----------------------------------------------------------------------------
:Initialize

    set SQL_SERVER_INSTANCE_NAME=SQLEXPRESS

    set SERVICE_LIST=
    set SERVICE_LIST=%SERVICE_LIST%  MSSQL$%SQL_SERVER_INSTANCE_NAME%
    set SERVICE_LIST=%SERVICE_LIST%  MSSQLFDLauncher$%SQL_SERVER_INSTANCE_NAME%
    set SERVICE_LIST=%SERVICE_LIST%  SQLAgent$%SQL_SERVER_INSTANCE_NAME%
    set SERVICE_LIST=%SERVICE_LIST%  SQLTELEMETRY$%SQL_SERVER_INSTANCE_NAME%
    set SERVICE_LIST=%SERVICE_LIST%  SQLBrowser
    set SERVICE_LIST=%SERVICE_LIST%  SQLWriter

    exit /b

rem ----------------------------------------------------------------------------
rem  Main
rem ----------------------------------------------------------------------------
:Main

    call :Initialize

    for %%i in (%SERVICE_LIST%) do call :Stop_Service %%i

    echo.
    pause
    exit /b 0

rem ----------------------------------------------------------------------------
rem  Stop_Service
rem ----------------------------------------------------------------------------
:Stop_Service

    sc query "%~1" | findstr STATE | findstr STOPPED > nul

    if "%errorlevel%"=="0" (
        echo サービス %~1 は既に停止しています。
        exit /b 1
    )

    net stop "%~1"

    if not "%errorlevel%"=="0" (
        echo サービス %~1 の停止に失敗しました。
        exit /b 2
    )

    exit /b 0

akiraa
PG
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした