雪国の技術的な夏

プログラミング的な話や特定のツール設定の話など。 ※ただし変態に限る。

SQL発行をバッチで行う(SQL Server版)

※実施は自己責任でお願いします。


[前提]
SQL Serverインストール済み
・バージョン○○(詳しくは忘れました!)


[動作確認済みの環境]
Windows7 Professional
 ・SQL Server 2008 R2
・WindowsServer2008 R2
 ・SQL Server 2008 R2


[ソース]

・SQL発行(SQLServer).bat

@echo off
setlocal

@rem DB設定関係
set DBId=MyID
set DBUser=MyUser
set DBPass=password
set DBName=MyDB

set SqlStr=update TableName set Col1=null, Col2=null;


rem SQL結果判定
set TmpLogFile=TmpLogFile.log
set ErrFlg=0

  rem データ消す
  sqlcmd -S %DBId% -U %DBUser% -P %DBPass% -d %DBName% -Q "EXIT(%SqlStr%SELECT @@ERROR;)">"%TmpLogFile%"
  @rem 結果判定
  if %ERRORLEVEL% NEQ 0 (set ErrFlg=1)
  if %ERRORLEVEL% NEQ 0 (
    echo  →[異常]Update失敗:err=%ERRORLEVEL%
    echo  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    type "%TmpLogFile%"
    echo  ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  )

@rem エラー判定
if %ErrFlg% NEQ 0 (
  echo ---------------------------------------------------------------------------
  echo    DB書込中に一部エラー発生
  echo ---------------------------------------------------------------------------
  pause
) else (
  del /F "%TmpLogFile%"
)

rem 終了
endlocal
exit /b 0

[その他]
ローカル処理をWeb公開用に整形したものなので、動作保証できません。
・エラー判定はうまくイケてたかどうか忘れました。とりあえずつけただけだったかも。