TL;DR
- SQL Server でテーブル定義変更用のクエリ等を順番に実行する方法
解説
- sqlフォルダに、実行したい順にファイル名を付けたテキストファイルを配置(01等の数値を付ける)
- 接続情報を記載して、BATを実行する
- ローカルにコピーしないと動作しない、はず
コード
構成
runsqlfiles.bat
└sql
└01_createtable.txt
└02_insertdata.txt
└...
runsqlfiles.bat
@echo off
set PATCH_HOME=%~dp0\
set SQL_DIR=sql\
set INFO_LOG1=sqlrunlog.log
set SQL_LOG1=sqldetaillog.log
set server=myserver\myinstance
set db=mydb
set user=myuser
set pass=mypassword
cd %PATCH_HOME%%SQL_DIR%
echo ━━━━━━━━━━━━━━━━━━━━
echo 接続先 %DB%@%SERVER%
echo %PATCH_HOME%%SQL_DIR%のテキストファイル(*.txt)のSQLを連続実行します。
echo ローカルにコピーしてから実行してください。
echo ━━━━━━━━━━━━━━━━━━━━
pause
REM exe
echo %date% %time% >> %PATCH_HOME%%INFO_LOG1%
for /f "usebackq" %%I in (`dir /b /a-d /s *.txt`) do (
echo 実行しています "%%I"
echo %%I >> %PATCH_HOME%%INFO_LOG1%
echo ――――――――――――――――――――― >> %PATCH_HOME%%SQL_LOG1%
echo %%I >> %PATCH_HOME%%SQL_LOG1%
echo ――――――――――――――――――――― >> %PATCH_HOME%%SQL_LOG1%
sqlcmd -l 240 -S %server% -d %db% -U %user% -P %pass% -i %%I >> %PATCH_HOME%%SQL_LOG1%
echo %date% %time% %%I ★完了 >> %PATCH_HOME%%SQL_LOG1%
)
echo %date% %time% >> %PATCH_HOME%%INFO_LOG1%
echo 完了。ログファイルを確認し、エラーが出ていないかを確認してください。
pause