- PR -

osqlコマンドでDBを作成

1
投稿者投稿内容
taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2006-09-13 10:37
SQLServer2005にバッチでDBを作成したいと思っています。
方法としてはバッチファイルからDB作成.sqlを呼んで作成する手段を考えております。
このときに、ログファイルとデータファイルの保存場所をバッチで設定したいと思っているのですが、どなたかご存知の方はいらっしゃいませんか?

osqlコマンドをいろいろしらべてみたのですが、わかりませんでした。

どなたかご教授お願いします。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-09-13 11:31
osqlコマンドを調べるんじゃなくて、
Books OnlineでCREATE DATABASE文を調べてみて下さい。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-09-13 11:32
DB作成.sqlに create database が書いてあるんですよね?

osqlを実行する前に、DB作成.sqlを編集して create database に書いてあるファイル名を変更しちゃえばいいんじゃないかっていうのが1つ。

もう1つは勘なのでできるかわからないけど。
osql の -q オプションが使えるような気がするようなしないような・・・。-q は@ddlも実行できるしA変数や環境変数を使用できるから、DB作成.sqlのcreate databaseのファイル名を変数にしといて、osqlを実行する前に変数にSETコマンドして、osql -q オプションにDB作成.sqlをリダイレクト('<'だっけ?)で流し込む。

いかがでしょうか?

--追加----------------------
-qにリダイレクトで流す件ダメでした。変数が変換されないや

[ メッセージ編集済み 編集者: かめたろ 編集日時 2006-09-13 12:46 ]
TLC
大ベテラン
会議室デビュー日: 2005/05/31
投稿数: 152
お住まい・勤務地: 東京都
投稿日時: 2006-09-13 12:13
お疲れ様です。
TimberLandChapel です。

CREATE DATABASE ステートメントの一部をパラメータ化したいわけですから,
生成.sql(T-SQL バッチファイル)の使用をあきらめたほうが
すっきりするような気がします。

バッチからのコールが前提なので,

・CREATE DATABASE ステートメントの組み立てと osql の実行を含めた VBS スクリプトファイルを作成する(.bat よりとり回しがよいですから)

・CREATE DATABASE をパラメータを受けて実行するストアドプロシージャを作成して,osql にパラメータを引き渡す(少々アクロバットです)

と2つくらい思いつきましたが,いかがでしょう?

----------
TimberLandChapel
Micorosoft MVP for Windows Server System - SQL Server(Jul 2005 - Jun 2007)
http://blogs.timberlandchapel.com/blogs/timberlandchapel/
わちゃ
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 162
お住まい・勤務地: 東京
投稿日時: 2006-09-13 12:30
自分だったら、bat でひたすら echo 文を使って最初に SQL のファイルを作成するかな。

del sql.txt
echo "CREATE DATABASE %1" >> sql.txt
echo "もろもろオプション" >> sql.txt

ってな感じ。
外部ファイルへの書き込みが必要なので、ちょっと権限系は確認が必要ですが。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-09-13 13:08
もう1コ思いついたのは、ログファイルとデータファイルを指定の保存場所にコピって sp_attach_db するだけって方法。

データベースの設定を含んだセットアップってどうやるのがセオリーなんだろう。かなり興味があります。エクスポートしたSQLスクリプトを流すだけならosqlが楽だろうし、でもセットアッププロジェクトのカスタム動作のサンプルをみるとADO.NETでやってるし・・・

[ メッセージ編集済み 編集者: かめたろ 編集日時 2006-09-13 13:19 ]
taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2006-09-14 09:52
ご回答をいただいた皆様

ご教授ありがとうございました。
とりあえず、createDB.sqlの中身(create databaseの文)を
そのつど編集する方法を採用することにしました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)