他社から送られてくるSQLファイルがボロボロで困ってます

このQ&Aのポイント
  • 数社共同のプロジェクトで、各社請負で(離れた場所で)開発しています。主幹会社が、プロジェクト共通のDDLやPL/SQLのストアドを管理していて、変更のある都度、それらのSQLファイルを送ってくるのですが、毎回毎回、エラーが出るファイルを送られてきて困っています。
  • こちらとしては、最低限コンパイルエラーのような事はないものと思って、SQL*Plusでまとめて実行するようにしていました。最近は毎回何かしらの部分でエラーが出てまして。エラーがあった場合は、その会社に伝えなければならないのですが、全部で数百ファイルあるので、エラーの有無と、その個所を特定するのが大変です。
  • 数百ファイルをまとめて実行した時に「ぱっと見」でエラーの有無とその概要が分かるようなツールはないでしょうか。
回答を見る
  • ベストアンサー

他社から送られてくるSQLファイルがボロボロで困ってます

数社共同のプロジェクトで、各社請負で(離れた場所で)開発してます。 主幹会社が、プロジェクト共通のDDLやPL/SQLのストアドを管理していて、 変更のある都度、それらのSQLファイルを送ってくるのですが、毎回毎回、 エラーが出るファイルを送られてきて困っています。 (ストアドの場合はコンパイルエラーで、DDLの場合はタイプミスでテーブル が作れない内容だったり) こちらとしては、最低限コンパイルエラーのような事はないものと思って、 (一番最初はエラーがなかったので)SQL*Plusでまとめて実行するように していました。 最近は毎回何かしらの部分でエラーが出てまして。 決して少なくない部分で出てます。(数十ファイルでエラーが出てたり) エラーがあった場合は、その会社に伝えなければならないのですがorz 全部で数100ファイルあるので、エラーの有無と、その個所を特定するのが 大変です。 数100ファイルをまとめて実行した時に「ぱっと見」でエラーの有無と その概要が分かるようなツールはないでしょうか。

  • Oracle
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • riveron77
  • ベストアンサー率48% (180/370)
回答No.1

回答がつかないようなので… > 数100ファイルをまとめて実行した時に「ぱっと見」で > エラーの有無とその概要が分かるようなツールはないでしょうか。 ツールとまでいきませんが↓こちらとか参考になりそうな気がします。 【接続結果やSQL実行結果のチェックをするサンプル】 http://www.happy2-island.com/access/gogo03/capter00701.shtml ↑こちらの例をそのままでは使えないかもしれませんが、ファイル読込みとファイル数だけループさせる、みたいな処理を追加すればできそうな気がします。未検証なので確証無しです。申し訳ないですが(汗)

donkypong
質問者

お礼

ご回答どうもありがとうございます。 やはりこのような悩みを解決してくれるツールはないのでしょうか... 同じような状況で困っているような人はいるのではないかと思うのですが、皆様どうされているのでしょうか。

その他の回答 (1)

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.2

spoolでSQL*Plusの出力をファイルに保存して、開発元に送りつけるだけで いいのではないですか。エラーの発生箇所など気にせず、「エラーがある から検収できない」というだけで向こうから対策を考えてくるでしょう。

donkypong
質問者

お礼

>「エラーがあるから検収できない」というだけで向こうから > 対策を考えてくるでしょう。 それでやってくれる相手ならいいんですが、毎回毎回 平然とエラーだらけのものを送ってくるので、 とりあえず、こちらで対処できる部分については勝手に 修正して作業を進めたいんですよ。 (もちろんエラーの発生については伝えますが) spool での出力保存は当然やっているんですが、以下の2点で しんどいです。 (1) ログが膨大になるので、エラーがあったのかどうかが  パッと見では分からない。  ※どのファイルでエラーになったのかも分かりにくいわけなのですが   (というか全く分からないです) (2) ストアド等はコンパイルエラーがあったことが分からない。  ※別途、SQL Developer 等で見て判断してますが、めんどくさいです。 で、何か良いツールはないかと思う次第です。

donkypong
質問者

補足

> 検収できない ちなみに、エラーだらけのファイルを送ってくる相手は、 私からすると顧客でして、私が納品物を受け入れて検収する という関係ではないため、面倒なんですよ。 あと、ストアドのコンパイルエラーについては、Oracleの View(名前忘れましたが)を見れば分かる、というのは 知ってますが、こんなくだらないことで時間を食いたくないので、 効率的にできるツール(や方法)がないかなあ、と思ってます。

関連するQ&A

  • SQLをcobolに記述することでのエラー

    NetCOBOLでSQLを埋め込んだプログラムを作成しています。 その中でどうしてもうまくいかないのが、短いSQLをCOBOLに記述すると、コンパイル(プレコンパイル→コンパイル→.dll)は通るのですが、実行の際にプログラムが見つからない旨のエラーが出てしまっています。 ソースを色々いじって分かったのは SQLを実行しなくてもソース内に記述するだけで実行エラーとなる。ということです。 コンパイルの時点で何かオプションが必要なのか、SQLが内部的にcallしているモノが何かおかしいのか、幾らか思い当たる部分はあるもののどうしていいかは全くわからずです。 どなたか似た経験ある方や、おもいあたる節のある方いらっしゃいましたら、どんな些細な事でもいいのでご教示願います。

  • 別ファイル(.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の用法が幅広いからでしょうか? 現状の私に活用・理解出来るサイト等を見つける事が出来ませんでした。 初歩的な質問をしているかもしれませんが、どうぞよろしくお願いします。

  • 実行したSQLファイルの名前をファイルに出力する方法

    1つのSQLファイルの中で、複数のSQLファイルの実行するようになっていて、それを1度に実行するようにしているのですが、途中でエラーが発生している状態です。 どのSQLファイルでエラーが出ているか一目で分かるようにしたいのですが、SQLファイルの名前を実行結果と一緒にテキストファイルに出力したりできないでしょうか? sqlplusのspool機能では実行結果のみ出力されますが、複数のSQLファイルを実行した場合にどの段階でエラーが出ているのか分かりづらいのでよい方法があれば教えてほしいです。 よろしくお願いします。(DBはOracle 10gです。)

  • Sql developer .sqlファイル実行

    SQL developerから、.sqlファイルの実行はできないのでしょうか? 家のパソコンに、vurtual Box でwindows上にLinuxをインストールして、そこにOracleを乗っけて勉強しています。 単純に、spcreate.sql を開きたかっただけなのですが、 windows上から、Sqlplusで下記を実行した場合 @?/rdbms/admin/spcreate.sql は、ちゃんとファイルを開くことができます。 しかしwindows上の、SQLdeveloperからは、上記の方にコマンドをうっても、 エラーが発生しました。ファイルが開けません。 とでてきます。 これは、sqldeveloperは、ファイルを開くようなことができない仕様になっているということでしょうか? よろしくお願いいたします。

  • BULK INSERT でファイルが開けなくて困っています

    初めての質問なのでトンチンカンなこと言ってたらすみません。 SQL Server 2005のストアドプロシージャを使ってBulk InsertでSQL Server とは別のパソコンにあるcsvファイルをテーブルにインポートしようとしているのですが、「...を開けなかったので、一括読み込みできません。...アクセスが拒否されました。」とエラーが出てしまいます。ストアドプロシージャは別パソコンのVB2005からパラメータ(ファイルパス等)を与えて実行しています。 ファイルの保存先フォルダは共有にしています。 ちなみにSQL Server側のパソコンからストアドプロシージャを実行するとちゃんとインポートしてくれます。 パスワードや権限が関係してるんでしょうか? 長くなりましたが、よろしくお願い致します。

  • VBScriptでSQLファイルの実行

    WSHShell.Runにて、SQL*Plus経由でXXX.sql(内部でストアドプロシージャをコールします)を実行し、ログも出力したいのですが、以下のコマンドをRunに指定すると、sqlplusより返ってこなくなってしまいます。 コマンドプロンプトで実行する分には、正常に終了するのですが・・・。 何が悪いのかわかりません。。 sqlplus -s ユーザー/パスワード@ホスト名 @C:\temp\XXX.sql > C:\temp\XXX.log 代替案として、VBSにてOracleのProcedureをコールする方法でも構いません。 わかる方いらっしゃいましたらご教授願います。 ちなみに、コマンド部分をbatファイルにしてそのbatファイルをVBSでコールすることは可能でした。

  • SQL Server時間切れについて

    初めまして。SQL初心者です。 あるシステムにおいて、SQLサーバが無応答?になり、システムがダウンしてしまい、困っています。 Windows2000Server、SQL Server2000、VB6を用いてDBに定期的にRead&Write、及び各種のデータ表示を行っています。 ADOを使用して、接続や各コマンドを実行しているのですが、ごくたまに以下のエラーが出てしまいます。 Code:-2147217871,Description:時間切れになりました。Source:Microsoft OLE DB Provider for SQL Server,SQL State:HYT00,NativeError:0 過去ログや他サイトを調べた結果、コネクションのCommandTimeoutの秒数を延長させる、とあったので60秒に変更しました。 が、不定期(大体1週間~10日前後で夜中や朝方などにもあり)にこのエラーが出てしまい、約1時間~1時間半もダウンしています(この間のエラーをOn Errorではじいてログファイルに保存しています)。 毎分必ず実行しているストアド(20装置分のデータをUPDATEするので1分に20回実行する)があるのですが、必ずと言っていいほどこのストアド実行中に落ちています。 このストアドに5~6個のパラメータを渡し、複数のテーブルに対してUPDATE処理を行っています。 正常に動作している時は、数日間全く問題無いので、ストアドやVBのコードに間違いは無いと思います。 そこで、SQL Serverの設定等を見直したところ、1つ気になったところが。データベースファイル \Microsoft SQL Server\MSSQL\Data\aaa.MDF のサイズが14Gになっていました・・・。 このファイルにアクセスする時にSQL Serverで高負荷になってしまい、無応答のような状態になってしまうのでは?と思っていますがどうでしょう? 不定期に発生し、かつ再現性が無く、原因が掴めずに本当に困っています。 先輩方、何でも良いのでアドバイスをお願い致します。

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

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

  • ストアドにしたらエラーになる

    10gを使ってます。 1.ワークテーブル作成 2.そのテーブルにインサート の一連のスクリプトをsql/plusかなんかでやると問題ないのに それをストアドにしたら2.の時にテーブルが存在しないと言うことで コンパイルエラーになってしまいます。 こうゆう場合どうすればコンパイルエラーを回避できるのでしょうか? 1.と2.を分割して二つのストアドにしないといけないのでしょうか。

  • SQLサーバ2000へのインポート方法とその他

    こんにちは。 SQLサーバはまったくよく分からないですが、いくつか教えていただく助かります。 業務では下記のように、メインフレームから生データ(CSVファイル)をWindows2000へFTPし、SQLサーバへインポートし、その後ストアドプロシージャを実行します。 条件としては、メインフレームから不定期にFTPがおこなわれ、つづいてFTPが終了したことを通知するためのREXEC処理がコールされます。 メインフレーム ↓ Windows2000 ↓ SQLサーバ この時の具体的なテクニックを教えてほしいのですが、経験のない私のイメージはVBなどでADOを使ってファイルをインポートし、SQLサーバ内のストアドを実行するという感じです。 ↓ (1)メインフレームからファイルFTP(PUT) (2)メインフレームからVBで作成したモジュールを起動。 (3)VBはCSVファイルをDBにインポート (4)そしてVBからストアドプロシージャを実行(これは可能?) 現在はどのような仕組やツールが一般的なのでしょうか? 詳細に教えていただけると助かります。 よろしくお願いします。