この記事の目的
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でのインストール中にエクスポートすることができます。
手作業で作ることもできますが、エクスポートした方が安全かと思います。
以下、エクスポートの手順です。
- SQL Serverのインストーラーを起動します。
- 「インストールの準備完了」までセットアップの項目を進めます。
- 「インストールの準備完了」まで進んだら「構成ファイルのパス」に記載されたパスの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