- - PR -
SQLServer2000のUSE句に動的なDB名の指定方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-08-06 17:51
いつもお世話になっております。
Transact-SQLのUSE句で現在のDBを選択できると思うのですが、 ここで指定するDB名を動的に変更したいと考えております。 実現できる方法や代替策をご存知の方いらっしゃいましたら、 ご教授下さい。 宜しくお願い致します。 |
|
投稿日時: 2007-08-07 16:12
どのタイミングでしょう?
どのような運用スタイルもしくは、実装スタイルで実現したいのでしょうか? 質問に至った要因がわからないのでなんとも。 |
|
投稿日時: 2007-08-07 17:32
ストアードプロシージャはほとんど使わないのですが、試しにストアードプロシージャでUSE を使おうとしてもできませんでした。
プログラムから対象DBにひとつずつ接続し、SQLやストアードプロシージャを実行させるしか私にはアイデアがありません。 |
|
投稿日時: 2007-08-08 09:32
お返事ありがとうございます。
年に1回データベースを新規作成して、そのデータベースのテーブルを作成&削除したいと考えております。 これらの作業を全て自動で行います。 テーブル作成だけならばmodelデータベースにテーブルを作っておけばいいのですが、 modelデータベースを既に別のシステムで使用しているためにテーブルの削除が必要になります。 他に方法がなければプログラムで作成したいと思います。 |
|
投稿日時: 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のため正常終了するはずです。 |
|
投稿日時: 2007-08-08 16:27
かめたろさん、お返事ありがとうございます。
その方法で可能かどうか検証してみます。 [ メッセージ編集済み 編集者: あおい 編集日時 2007-08-08 16:28 ] |
1