LoginSignup
2
8

More than 3 years have passed since last update.

SQL Serverをbatでサイレントインストール

Posted at

この記事の目的

Windowsのcmdを用いて、SQL ServerをGUIなしでインストールします。
仮想環境やDockerであればいいのですが、物理環境に同じ設定で何度もインストールするのは苦行以外の何物でもありませんよね。
Powershellでの自動化は別記事があったので、ここではbatでの自動化を記載します。

前提

以下の組み合わせで確認しました。

  • Windows Server 2012 / SQL Server 2012
  • Windows Server 2016 / SQL Server 2016

準備

SQL Server

当然ですが、SQL Serverのインストールメディアかisoファイルが必要です。
isoは仮想ドライブにマウントします。

iniファイル

残念ながら1回はSQL ServerのインストーラーをGUIで実行する必要があります。(インストールを完了する必要はありません)
SQL Serverのサイレントインストールを行うには設定内容が記載されたiniファイルが必要です。
以降のサイレントインストールはこのiniファイルの内容通りにセットアップします。
このiniファイルはGUIでのインストール中にエクスポートすることができます。
手作業で作ることもできますが、エクスポートした方が安全かと思います。
以下、エクスポートの手順です。

  1. SQL Serverのインストーラーを起動します。
  2. 「インストールの準備完了」までセットアップの項目を進めます。
  3. 「インストールの準備完了」まで進んだら「構成ファイルのパス」に記載されたパスのiniファイルを取得します。このマシンにSQL Serverをインストールするのでなければ「キャンセル」を押して構いません。
  • 注意
    Expressエディションだとただインストーラーを実行しただけではiniファイルを取得できません。
    以下のコマンドでインストーラーを実行する必要があります。1
    SETUP.exe /UIMODE=Normal /ACTION=INSTALL

実行

batファイルのサンプルは後述しますが、実行するコマンドは以下だけです。
D:\Setup.exe /QA /ConfigurationFile="xxx\ConfigurationFile.ini"
Setup.exeのパスはDVDドライブのドライブ名によって適宜変更してください。
ConfigurationFile.iniのパスも適宜変更してください。(フルパスの方がいいと思います)

  • 注意 SQL Server 2016はSQL Server Management Studioがバンドルされていません。
    上記コマンドではインストールされないため別途インストーラーをダウンロードしてインストールする必要があります。

サンプル

対話があるのであまりサイレントではない気もしますがサンプルです。
※ 実行はご自身の責任で行ってください。
※ 記法が正しくない、または効率的でない可能性が多分にあります。

@echo off

setlocal

set /p configfile="Configurationファイルのフルパスを入力してください。  : %configfile%"
if not exist %configfile% (
  echo Configurationファイルが存在しません。確認の上、再度実行してください。
  goto END
)

set /p exe="Setup.exeのフルパスを入力してください。D:\Setup.exeであれば何も入力せずにEnterキーを押してください。  : %exe%"
if "%exe%"=="" (
  set exe="D:\Setup.exe"
)
if not exist %exe% (
  echo Setup.exeが存在しません。確認の上、再度実行してください。
  goto END
)
echo.
echo プロダクトキーが正しいことを確認の上次に進んでください。
echo.
set /p ans="SQL Serverのインストールを実施します。よろしいですか? (Y/n)  : %ans%"
if NOT "%ans%"=="Y" (
  echo 中断します。再度実行してください。
  goto END
)
%exe% /QS /ConfigurationFile=%configfile%
if NOT %ERRORLEVEL% == 0 goto FAILURE

echo.
echo 完了しました。
goto END

:FAILURE
echo.
echo エラーが発生しました。
echo エラー内容を確認の上、再度実行してください。

:END
pause
exit 0
2
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
8