• 締切済み

SQL ServerのSQL実行時のエラーについて

XXXX.sqlファイルに20万件ほどのクエリが書かれています。 メモリの消費を防ぐために、1行ごとでGOを行い処理をさせています。 SQL ServerのEnterprize ManagerでXXXX.sqlファイル を実行すると(1行処理しました)という表示がされます。 そしてエラーが起きると、エラーが起きた旨と、その行が 表示されるのですが、1行ごと実行させているので、エラーが起きた行を うまく特定できません。 上記のような場合で、エラーが起きた際に、エラーが起きた 該当クエリを知りたいのですが、 何か方法はありますでしょうか。

みんなの回答

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

1. 実行結果の内容を全部テキストエディタ(メモ帳など)にコピーして、「(1行処理しました)」の数を数える。 とはいえ、20万件もあるのでは実行結果のバッファがあふれて、最後のほうの一部しか残っていないでしょうから・・・ 2. isqlやosqlでクエリを流し、実行結果をリダイレクトでテキストファイルに入れる。この方法であれば「実行結果のバッファがあふれて前のほうが見えない」ということなく、実行結果はすべて記録できます。実行完了後に、ゆっくり「(1行処理しました)」の数を数えてください。 数を数えるのが面倒という場合は・・・ 3. まず10万件ずつに分割してクエリを流す。エラーが発生したら、その「エラーが発生した側」を再度2つに分割してクエリを流す。これを、1回に流すクエリの件数が手頃な数になるまで繰り返す。最初が20万件なら、2分割を15回繰り返せば6件まで絞り込めます。一度に2分割でなく4分割にすると、4分割を7回繰り返せば12件まで絞り込めます。 もし「クエリ」の内容が「同一テーブルへのinsert」の場合は・・・ 4. insertするvaluesの内容に連番のIDを追加し、同じくIDカラムを追加したテスト用テーブルにinsertする。insertが失敗するとIDカラムの連番に穴があくので、検索すればどのinsertが失敗したのかすぐに分かる。 ひとまず思いつくのは、こんなところでしょうか。

nihon_no_samurai
質問者

お礼

ありがとうございます!

nihon_no_samurai
質問者

補足

やはり手軽ではなさそうですね・・・ もう少し何か方法がないか検討してみます。

関連するQ&A

  • SQLが実行されません…

    mysqlDB処理を幾つか行うPHPプログラムを作成しています。 処理内では複数のSQLを実行するのですが、 実行後、毎回1つのSQLが実行されていません… 実行されないSQLはいつも違うSQLです。 実行されなかったSQLのエラー文を出力してみた所 'Transaction already aborted' from NDBCLUSTER と表示されていました。 これはどういった意味を指すのでしょうか? 詳しい方がおられましたらご回答お願いします。

    • ベストアンサー
    • MySQL
  • SQL Serverのエラーについて

    サーバーの環境 OS:MS Windows NT Server 4.0 DB:MS SQL Server6.5 SQL Server 6.5 Service Pack 5a Windows NT 4.0 Service Pack 6a Internet Information Server 4.0 Internet Explorer 5.5 SQL Serverにクエリーを実行すると以下のエラーが発生します。 解決方法をご存知の方いましたらご教授願います。 Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]行のサイズが 2107 になり、作業テ-ブルの作成に失敗しました。テ-ブル 2014 内の 1 行の許容サイズを超えます。

  • SQL SERVER 2005のメンテナンスプラン実行エラーについて教えてください

    SQL SERVER 2005にてメンテナンスプランよりデータベースバックアップ(完全)を作成し実行をさせるとエラーとなってしまいます。 SQL SERVER エージェントの履歴を見ると下記の内容が表示されていました。 【SQL SERVER エージェントの履歴】 「10/21/2009 15:33:22,DBバックアップ.Subplan_1,エラー,0,SERVER02,DBバックアップ.Subplan_1,(ジョブの結果),,ジョブは失敗しました。 ジョブは ユーザー SERVER02\Administrator によって起動されました。最終実行ステップはステップ 1 (Subplan_1) でした。.,00:00:00,0,0,,,,0 10/21/2009 15:33:22,DBバックアップ.Subplan_1,エラー,1,SERVER02,DBバックアップ.Subplan_1,Subplan_1,,ステップ 1 の実行を開始できません (理由: 行 (1): 構文エラー). ステップは失敗しました。,00:00:00,0,0,,,,0」 他のサーバーで同じようにメンテナンスプランを作成し実行しても問題がありません。(SQL SERVER 2005のバージョン:9.0.3042) 実行エラーを起こすサーバーはディスク障害を起こし復旧後にSQLを再インストールしています。(SQL SERVER 2005のバージョン:9.0.1399) どのようにすれば正常に実行されるのでしょうか? 見づらい内容で申し訳ありませんが、ご教授の程よろしくお願い致します。

  • cakePHPでSQLが実行できない。

    cakePHP2.2でSQLが実行できません。 実行のやり方が悪いのでしょうが ネットで探してもイマイチ理解できません・・ やりたいのは画面から入力された値を使い SQLを実行することです。 何が駄目なのか教えてください。 controllerのソース <?php class BuhinController extends AppController { public $layout = 'user_default'; //## ログイン処理 public function login(){ $bool = false; $rslt = null; Configure::write('debug', 1); $sql = "select id from table_user where add = '". $_POST["add"] . "' "; $sql = $sql. " and pass = '". $_POST["pass"] . "'"; $this->query($sql); } public function index(){ } public function logout(){ $this->Auth->logout(); } } ?> エラーメッセージ Fatal Error Error: Call to undefined method BuhinController::query() File: C:\xampp\htdocs\cake\app\Controller\BuhinController.php よろしくお願いします。

    • ベストアンサー
    • PHP
  • バッチより実行されるSQLについて

    あるバッチファイルからSQL文を実行します。 SQLの内容を簡単に申し上げますと テーブルAにレコードが1件存在したときは、 テーブルBを削除する。 テーブルAにレコードが2件存在したときは、 何もしない。 バッチファイルには、後続の処理もあるのですが 割愛します。 ここで質問なのですが、レコードが2件存在した とき、バッチの後続処理を実行させずに、そこで 処理終了とさせたいのですが、方法はあります でしょうか? SQL内でバッチのエラーレベルのようなものを 渡せたら、解決できそうなのですが、方法が わかりません。 説明があいまいでわかりにくいかもしれませんが 何か方法がありましたら、教えてください。

  • SQL実行結果取得

    バッチファイルにて、 sqlplusコマンドにより*.sqlファイルを実行し、 SQL文を発行していますが、 実行結果(処理件数)をコマンドプロンプト上 に表示したいのですが、どなたか。手法をご存知では ないでしょうか?

  • connectを使ったSQL実行でエラー

    以下のphpでsql文を実行したのですが、エラーになってしまいます。 sql文が間違っているのでしょうか?phpmyadminで作成したsqlを貼り付けたのですが・・・ どなたか回答お願いします。 header("Content-type: text/html; charset=shift-jis"); #mysql_connectを使う #mysqliの定義 $mysqli = new mysqli('localhost', 'root', "", "******"); $link = mysql_connect('localhost', 'root', "", "*********"); if (!$link) { die("1:接続失敗です。".mysql_error()); }else{ print("1:接続成功!<BR>"); } // 文字化け防止 /* 文字セットを utf8 に変更します */ if (!$mysqli->set_charset("utf8")) { printf("2:文字コードのセットに失敗しました。: %s\n", $mysqli->error); } else { printf("2:文字コードセット-> %s\n", $mysqli->character_set_name()); } printf("<BR>"); $query = file_get_contents("./sql/create.sql"); printf("3:クエリ->%s",$query);#ちゃんと読み込まれているかクエリ確認 $stmt = $link->prepare($query); $stmt->execute(); // 変数のバインド $stmt->bind_result($name,$email); // 表示 while ($stmt->fetch()) { echo $name; echo $email; } //切断 $mysqli->close(); ------------------------------------------------- :実行結果 1:接続成功! 2:文字コードセット-> utf8 3:クエリ->SELECT * FROM test_table WHERE 1 Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdoc\saaaaa\aaaaa.html on line 41

    • 締切済み
    • PHP
  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP
  • SQL Serverが身に覚えもなく実行中?

    こんにちは。 スタートメニューの最近使ったソフトが表示される所に「SQL Server 構成マネージャ」というものが表示されているということに気づきまして、「こんなソフト使ったかな?」と思い、開いてみるとSQL Serverが実行中となっていました。 右クリックでプロパティを見てみると、ビルトインアカウントにチェック、ネットワークサービスが選択されていました。 SQL Serverというものが何なのか分からなくて検索したところ、マイクロソフトのデータベース用のソフトらしいのですが…。 SQL Serverの実行に身に覚えのない場合、PCが何か怪しい動き(外部からPCの閲覧・操作など)をしているということも考えられるのでしょうか?(PCには自分以外が触ることはありません) SQL Serverは停止した方が良いのでしょうか? よろしくお願い致します。 OSはWindowsVistaです。

  • phpMyAdminのSQLクエリ実行について

    MySQLでデータベースを作ろうとしてphpMyAdminの、SQL>>『テキストファイルの場所』みたいなとこに.sqlのファイルを.gzに圧縮して、"gzip 方式"にチェックをして実行をしようとしましたがいかんせん時間がかかりすぎてなかなか実行できません。.gzのファイルの重さは1000KB足らずなのですが・・・。 1000KBは実行には重いんでしょうか?また、このような状況になったときに他にクエリを実行するにはどうしたらいいでしょうか? クエリはCREATE TABLEとINSERT INTOです。長文失礼しました。

    • ベストアンサー
    • MySQL