- PR -

SQLServer2000のUSE句に動的なDB名の指定方法

1
投稿者投稿内容
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2007-08-06 17:51
いつもお世話になっております。

Transact-SQLのUSE句で現在のDBを選択できると思うのですが、
ここで指定するDB名を動的に変更したいと考えております。

実現できる方法や代替策をご存知の方いらっしゃいましたら、
ご教授下さい。
宜しくお願い致します。
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-08-07 16:12
どのタイミングでしょう?

どのような運用スタイルもしくは、実装スタイルで実現したいのでしょうか?
質問に至った要因がわからないのでなんとも。
yawata133
ベテラン
会議室デビュー日: 2007/04/06
投稿数: 76
投稿日時: 2007-08-07 17:32
ストアードプロシージャはほとんど使わないのですが、試しにストアードプロシージャでUSE を使おうとしてもできませんでした。

プログラムから対象DBにひとつずつ接続し、SQLやストアードプロシージャを実行させるしか私にはアイデアがありません。
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2007-08-08 09:32
お返事ありがとうございます。

年に1回データベースを新規作成して、そのデータベースのテーブルを作成&削除したいと考えております。
これらの作業を全て自動で行います。
テーブル作成だけならばmodelデータベースにテーブルを作っておけばいいのですが、
modelデータベースを既に別のシステムで使用しているためにテーブルの削除が必要になります。

他に方法がなければプログラムで作成したいと思います。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-08-08 10:13
EXECUTEステートメントを使えば、一応できます。
ただし、USE句の有効範囲はEXECUTEステートメント内に限られてしまいますが。

DECLARE @DB VARCHAR(10)
SET @DB = 'pubs'
USE master EXEC('USE ' + @DB) SELECT * FROM authors --1
USE master EXEC('USE ' + @DB + ' SELECT * FROM authors') --2
この例だと、1の方はmasterに対するselectのためエラーとなり、2の方はpubsに対するselectのため正常終了するはずです。
檸檬
ベテラン
会議室デビュー日: 2004/04/26
投稿数: 87
投稿日時: 2007-08-08 16:27
かめたろさん、お返事ありがとうございます。

その方法で可能かどうか検証してみます。

[ メッセージ編集済み 編集者: あおい 編集日時 2007-08-08 16:28 ]
1

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