(SQL Server)SQLサーバの無人インストールとインストール後の各種設定設定 Part3とかなり関連のあるネタです。
バッチファイルで SQL Server 2005 Express のインストールと mdf のアタッチさせるんですが、mdf ファイルはシステムドライブの固定のフォルダにおいてるとします。たとえば C:\test\testdb.mdf とします。
最初は下記のようにしてました。
・バッチファイル(Windows認証)
CREATE DATABASE RhythmPro ON
(FILENAME = N'%systemdrive%\test\testdb.mdf' ),
(FILENAME = N'%systemdrive%\test\testdb_log.ldf' )
FOR ATTACH;
SQL ファイルの中で %systemdrive% と入れたんですが、環境変数は SQL スクリプトでは使えないようです。
ということで、下記のようにバッチファイルの中に SQL クエリを記述すると、環境変数が置換されちゃんと動きました。
>sqlcmd -S localhost\SQLEXPRESS -Q "CREATE DATABASE TestDatabase ON (FILENAME = N'%systemdrive%\test\testdb.mdf' ),(FILENAME = N'%systemdrive%\test\testdb_log.ldf' ) FOR ATTACH;"
あと、SQL Server の自動インストールバッチファイルと同じバッチファイル上でに sqlcmd コマンドを使おうとすると、ダメみたいです。
どうやら SQL Server インストール中に環境変数 Path に sqlcmd があるフォルダへのパスが登録されるっぽいですが、いったん終了して再度コマンドプロンプトを立ち上げないと、環境変数反映されないっぽいです。
ここら辺注意が要りますね。