指定されたフォルダ配下に存在する SQL を記述したファイルを sqlcmd を使用して一括実行します。
sqlcmd はコマンドライン上で SQL を実行する為のコマンドです。
SQLServer2005 以降をインストールすると使えるようになります。
SQLServer2000 のみインストールされている場合は osql に変更してください。
設定ファイルはビルドする環境に合わせて各プロパティ値を変更する事でビルド出来るようにしてあります。

<?xml version="1.0" encoding="utf-8"?>
<project name="SQLSeverCommand" default="sqlcmd" basedir="."
xmlns="http://nant.sf.net/schemas/nant-0.85.win32.net-1.0.xsd">
<description>
SQLステータスファイルの一括実行
指定されたフォルダ配下に存在するファイルを sqlcmd を使用して一括実行します。
</description>
<!-- Properties -->
<!-- インスタンス名 -->
<property name="DB.Server" value="(local)\SQLEXPRESS" readonly="true"/>
<!-- データベース名 -->
<property name="DB.Name" value="Dev" readonly="true"/>
<!-- ログインユーザー名(指定しない場合は Windows 認証) -->
<property name="DB.User" value="" readonly="true"/>
<!-- ログインパスワード -->
<property name="DB.Password" value="" readonly="true"/>
<!-- 実行するファイルが存在するフォルダパス -->
<property name="SQLFolder" value="sql" readonly="true"/>
<!-- コマンド名(SQLServer2000 のみインストールされている場合は osql に変更) -->
<property name="Cmd.Name" value="sqlcmd" />
<!-- End Properties -->
<target name="sqlcmd" description="SQL Server 2005 sqlcmd Run">
<if test="${DB.User==''}" >
<property name="Args" value='-S ${DB.Server} -d ${DB.Name} -l 5 -E' />
</if>
<ifnot test="${DB.User==''}">
<property name="Args"
value='-S ${DB.Server} -d ${DB.Name} -l 5 -U ${DB.User} -P "${DB.Password}"' />
</ifnot>
<echo message="Database Update - ${DB.Server}.${DB.Name}"/>
<echo message="${Args}"/>
<foreach item="File" in=".\${SQLFolder}" property="filename">
<echo message="${filename}"/>
<exec program="${Cmd.Name}" output="${filename}.log">
<arg value='${Args} -i "${filename}"' />
</exec>
</foreach>
</target>
</project>

カテゴリー: NAnt

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*