• ベストアンサー

クエリファイルから外部のクエリファイルを実行する方法

SQL Server2000です。 DB構築を行うにあたり、インストールで実行するクエリファイルから、 別のクエリファイル(実際にテーブル、ストアドを構築する内容を記述)を実行できる方法がわからず悩んでいます。 a.sql・・・b.sqlやc.sqlを統括するクエリファイル b.sql、c.sql・・・テーブル構成、ストアドを構築するクエリファイル SQL クエリアナライザからa.sqlのクエリファイルを開いて、 クエリ実行するイメージでいます。 a.sqlからb.sqlを呼び出すには、どのような記述をすればよろしいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

インストールスクリプトの作り方として、その方法は「SQL Serverでは」一般的ではないと思います。 OracleのSqlPlusの「@」のようなものはありません。 インストール用に複数のsqlファイルを準備するならば、ドライバはsqlファイルではなく、バッチファイルにし、 そこにosqlコマンドを並べていくことになります。 どうしてもドライバをsqlファイルにしたい場合、xp_cmdshellを使ってosqlを実行することになります。 (sysadminしか実行できないものになります)

amalthea
質問者

お礼

ご回答ありがとうございます。 実はOracleのようなものを期待しておりました。 ですが、やはり、ないのですね。 泥臭くなってしまいますが、 インストール用の複数のsqlファイルを一つにまとめるなどして、別アプローチをとることにします。 この度はありがとうございました。

関連するQ&A

  • Enterprise Managerとクエリアナライザの違い

    SQL Serverの初心者です。 テーブルやView、ストアドを見たり変更したりする場合に、SQL Serverとクエリアナライザを使いますが、 この2つのソフトの違いは何なのでしょうか? 片方だけでというわけにはいかないのでしょうか? テーブルの値変更やストアドを作るのは、どちらでもできますが、 SQL Serverでストアドを単体実行はできませんよね。 この辺りの微妙な違いが何なのか・・・

  • 別ファイル(.sql)に記述したクエリの連続実行

    毎度お世話になっております。 現在、SQLServer2005EXPRESS,VisualSudio2008(C#)にて、 十数個の新しいストアドプロシージャと、 それを必要とするアプリを作成しております。 これらを配布先で実装するにはどうするのが最も(使用者にとって)容易か? 知恵をお貸しください。 アプリは実行ファイルをそのまま配布(インストーラー等)すれば 問題無いと考えていますが、ストアドプロシージャは配布先の サーバー管理者がDBに追加しなくてはいけません。 現在、ストアドを作成するためのSQL文を記述した "CREATE_01.sql"~"CREATE_10.sql"を用意していまして、 DB管理者はManagement StudioでDBにログインした状態で これら.sqlファイルを順番にダブルクリック&実行していけば ストアドの作成はできます。 ですが全部で10回も同じ操作をせねばいけません。 できれば「これ押すだけで後は待つだけ」くらいに容易な物にしたいのです。 "CREATE_01.sql"~"CREATE_10.sql"の中身は全てストアドのCREATE文 で、試しに1っの.sql内に実行したい順に CREATE PROCEDURE XXX_01 … AS (中略) CREATE PROCEDURE XXX_02 … AS (中略) CREATE PROCEDURE XXX_03 … AS (中略) …と、いった記述をしますと、使用変数等のエラーが多発し、 また10のSQL中でエラーが出ないように変数を振りなおす&確認する 時間を考えると効率的な方法ではなく思えます。 コマンドの連続実行、というと.batファイルが真っ先に思い浮かぶの ですが、.bat 入門 SQLServer 等のキーワードで検索をしましたが batの用法が幅広いからでしょうか? 現状の私に活用・理解出来るサイト等を見つける事が出来ませんでした。 初歩的な質問をしているかもしれませんが、どうぞよろしくお願いします。

  • 外部クエリを実行

    /home/○○/△△.sql にある外部クエリをphpMyAdminから実行させる場合 phpMyAdminでのsplはどのような記述になるでしょうか。 よろしくお願いいたします。

  • ファイルに書かれたSQLの実行方法(oracleとの違い)

    お世話になります。 SQLServer2000、クエリアナライザで質問があります。 ファイルに書かれた一連のSQLの実行したいとき、 ORACLEでは、SQL*PLUSから ファイル名の前に@をつけて実行できました。 また、SQLスクリプトの中で、別のSQLスクリプトを呼び出す場合は、@@を付ければできました。 このような事を、クエリアナライザから行いたい場合、どのようにすれば可能でしょうか? よろしくお願いします。

  • Accessのクエリ実行について

    すみません。ご存知でしたら、教えてください。 まず一点、基本(?)を確認させてください。 下記のように数個のテーブルとそれらを使用した数個のクエリがあったとします。 下記の場合に、もしどれかのテーブルを更新したとします。 その場合、アクセスを立ち上げて、クエリ3を実行するだけで、結果には反映されているのでしょうか?それとも、アクセスを立ち上げて、 クエリ1を実行し閉じ、クエリ2を実行し閉じ、最後にクエリ3を実行しないと、反映されていないのでしょうか? --------------------------------------------------------- テーブルリンクA 、テーブルリンクB、テーブルリンクC、テーブルリンクD ↓↓ テーブルAとテーブルBでクエリ1(マッチング)を作成 テーブルCとテーブルDでクエリ2(マッチング)を作成 ↓↓ クエリ1とクエリ2でクエリ3(マッチング)を作成 ------------------------------------------------- 続いて、もし上記でいちいち途中のクエリを実行しないと、 最後のクエリに反映されない場合、すべてをACCESSを立ち上げたと同時に自動実行し、自動で最後のクエリ(この場合、クエリ3)をエクスポートしたいと考えています。可能でしょうか? 素人な質問ですみません。 何卒よろしくお願いいたします。

  • SQL Developerでクエリ実行

    select * from テーブルA where カラムA2 = :バインド変数 select * from テーブルB where カラムB2 = :バインド変数 SQL Developerでエディタに記述した複数のSQLを一度に実行する際に ①同じ名前のバインド変数であっても何度も値を聞いてくるのを1回で済ませたい ②SQLごとにひらく問い合せ結果について名前が問い合せ結果1、問い合せ結果2だとわかりづらいので、固有の名前をクエリ実行時に自動でつけるようにしたい よろしくお願いします。

  • 外部ファイルでクエリを実行したい

    「クエリを実行している間にローディング画像を表示する」という処理をしたいです。 外部ファイルの[load.php]内で「データベース接続→mysql_queryを実行する」という処理を 行い、[index.php]で結果を表示したいのですが、うまくいきません。 ※load.phpの中身をindex.php内に書いた場合は成功する ※load.phpの読み込み自体はできている。 [index.php] <script type="text/javascript"> $(function(){ $("#sample").load("load.php"); }) </script> <div id=sample> <div id="loader"><img src="edit/img/loader.gif" width="24" height="24" alt="Loading..." /></div> <?php echo $num; ?> </div> [load.php] <?php $conn = mysql_connect("localhost","DB","pass",true); mysql_query("SET NAMES utf8") or die("can not SET NAMES utf8"); mysql_select_db('DB',$conn); $sql = "SELECT ~" $result = mysql_query($sql) or die(mysql_error()); $num = mysql_num_rows($result); ?>

    • ベストアンサー
    • PHP
  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • スクリプトファイルの一括実行

    SQLSERVER初心者です。 CREATE文を沢山作ったのですが、 1テーブル1ファイルのテキストファイルで 作ってしまい、 クエリアナライザでテーブル作成するときに 1ファイルずつ開いて、コピーペーストして 1テーブルずつ作成しています。 SQL*PLUSのように @ファイル名のように、 複数スクリプトを一括実行できる方法は ありませんでしょうか。 お時間のあるときに解答おねがいします。 m(_ _)m 開発環境 SQLSERVER2000 OS:windows server2003

  • 長文クエリをアプリから送る方法

    http://okwave.jp/qa5129633.html ↑のスレッドで質問した内容とかぶる部分がありますが (回答下さったjamshid6さん、すいません。) 疑問の主点が変わってきたので別途質問させていただきます。 【目的】 現在、VisualStudio(C#)と、SQLServer2005EXPRESSでアプリ開発をしていまして、 「アプリのワンボタンでストアドが作成できるようにする」 のを要求されています。 ストアド作成の為のCREATE文は「RECOVERY_PROCEDURES.sql」(50kb) というファイルで持っています。(アプリユーザーも) ユーザー(素人を想定)がコマンドプロンプトを叩いたり、 データベースがインストールされているマシンの元まで行き RECOVERY_PROCEDURES.sqlを実行する等の操作は無いものとします。 SQLServer2005はリモート接続の許可済みです。 ストアドを作成するためのSQLを、アプリ側から投げるとしたら 大量の文字列を変数の中に持ってSQL実行を要求する事になります。 そして、普通そんなことはしない…と思います。 データベースとの接続が確立された状態でこの 「RECOVERY_PROCEDURES.sql(CREATE PROCEDURE文)」の内容 を実行するには、アプリをどう作ればいよいのでしょうか? 大量の文字列を入れる変数を用意してやり その中に直接.sqlの文字列を書き込むという方法は試しましたが 改行が入った途端にビルドエラーが多発します。 (C#ではクエリは1行で書かなければいけないようですね) 自分の今までの認識ですと、ストアドを作成するといった操作は DBの管理人(それなりに知識がある)人間が行う操作で アプリのソースにストアドの内容を全部記述して誰でも作成できるようにするという要求に戸惑っています。 長々と書いてしまいましたが、アプリユーザーがワンボタンで 「RECOVERY_PROCEDURES.sql」の内容のストアドが作成出来れば 手段は選びません。どうかご教授くださいませ。