• 締切済み

DB2のテーブルの修復方法

日付項目はパーティションキーとなっているテーブルに対してATTACHしましたが、 自分のミスでワークテーブルの該当キー項目の値はATTACH命令のSTARTING FROMとENDING ATで指定した値と違った。 例:STARTING FROM ('2012-01-01') ENDING AT('2012-01-01').... 実際のワークテーブルの該当キー項目は2011-01-01となっている。 結果としてはパーティションが追加され、アクセス無効の状態です。 整合性チェックset integrityを実行すると、チェックエラーとなる。 追加されたパーティションに対してDETACHしてもエラーとなる。 この場合はどうすれば解決できるのでしょうか?ご教授をいただきたいです。

みんなの回答

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

エラーが起きたなら、 エラーの内容を書くと わかる人にはわかる。 エラー内容を書かなくても わかる人にはわかるのだが、 そういう、まっとうな仕事を している人で、このサイトを 定期的に見てる人がいるか どうかはわからない。 DB2はおろか、DB自体 ほとんど触ったことのない、 人間の直感的な意見だけど、 この辺をチェックしてみるのもよいかも。 http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/t0021577.htm

wkh_wx
質問者

お礼

有難うございました。

wkh_wx
質問者

補足

自己解決しました。 整合性チェックのfor exceptionを使って不整合のデータを別表に移動することで テーブルのペンディング状態を解除させることでなおりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 既存テーブルから別テーブルへのデータコピー時、発番を行いたい

    お世話になります。 テーブルからテーブルへのデータコピーをしたいのです。 たとえば、 ワークテーブルから売上テーブルへ データをコピーするとします。 売上テーブルには、主キーとなる「売上NO」(10桁)という項目があります。 ワークテーブルには売上NOはないので、データ移行時に売上NOを作成してやらないといけません。 一文だけで片付けようとすればどう書けば良いのでしょう?というか一文では無理なのでしょうか? insert into 売上テーブル (売上NO,販売単価......) select (select right('0000000000' + (convert(nvarchar,max(売上NO) + 1)),10) from 売上テーブル) ,販売単価..... from ワークテーブル とやってみましたが、ダメでした。一括でデータ追加に行くので主キー重複エラーとなりました。 どなたかご教授ください。お願いします。

  • 異なるテーブルのレコード削除

    オラクル初心者です。宜しくお願いします。 AAA、BBB、CCCというテーブルがあると仮定します。 画面から入力された値(ddd)をキーとして、CCCテーブルから該当するレコードをセレクト文で引っ張り、eeeという値を抜き出したとします。 そのeeeという値をキーにAAA、BBBテーブルのレコードを削除するにはどういうSQLを発行すればよろしいでしょうか? "delete from AAA, BBB where eee = (select eee from CCC where fff = ddd);" では駄目でした。 質問が下手でわかりにくいかもしれませんが、どうかご教授お願いします。

  • フォームからテーブルを操作する方法

    アクセスのフォームから、テーブルを更新というか、情報を追加する方法を教えてください。 t1というテーブルのフォームを作成し、他のテーブルt1_tantouからコンボボックス(値集合ソース:t1_tantou)している「担当者」の項目を、直接入力があった時に、t1_tantouに新しい情報をレコードとして追加できるようにする方法を探しているのですが、いまいち解りません。 t1_tantouには主キーとなるtIDと担当者、担当フリガナ(フリガナ機能による)の項目があるのみです。 よろしくお願いします。

  • テーブルのマッチングについて

    ORACLE10gを使用しています。 AとB同じレイアウト(キーも同じ)のテーブルがあります。 この2つのテーブルを比較して、 (1)Aテーブルのみにあるもの:1レコードCテーブルに追加 (2)Bテーブルのみにあるもの:1レコードCテーブルに追加 (3)A、B両方にあるもの:2レコードCテーブルに追加 上記に該当するレコードをCテーブルにINSERTしたいです。 実は、Cテーブルに項目が1つ追加されまして「区分」を書く必要があります。 どのパターン((1)か(2)か(3))でINSERTしたデータかです。 (1):1、(2):2、(3):3をセットする どのようにSQLを作成すると実現できるのでしょうか? ご指導よろしくおねがいします。

  • 2つのテーブルからレコードを抽出する方法

    お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?

    • ベストアンサー
    • MySQL
  • 3つの関連するテーブルから必要な情報を取り出す

    現在、データベースで小規模の検索システムを製作しているのですが、詰まってしまったところがあるので、質問をさせて頂きたいです。 まず、最初に取り出したいテーブルの構成を書きたいと思います。 "Tag" "Works" "EquipTag" の三つのテーブルがあり、 Tag /* Tagをあらわすテーブル*/ id: primaryキー name: 名前 created_at: 作成日 Works /* 作品を表すテーブル*/ id: primary キー name: 名前 created_at: 作成日 Equip_Tag /*作品とタグの関連を保存するテーブル*/ id: primaryキー works_id: 外部キー Worksのprimaryキーに対して tag_id: 外部キー Tagのprimaryキーに対して となっています。 上記のテーブルから、 「タグの名前に '%hoge%'を持ち、かつ、作品の名前に'%hogehoge%'を含む作品一覧」を取得したいのですが、どういった方法が考えられるでしょうか? また、Worksのidが同じものは2度表示しないようにしたいと考えています。 使用しているDBは、MySQL のバージョン5です。 どうか宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 2つのテーブルに差異があるデータを抽出する方法

    このようなことが実現できるのかというご相談です。 ご存知の方がいらっしゃいましたらご教授ください。 環境はSQL Server2008です。 2つのテーブルがあります。 1度のSQLでその2つを比較し、以下の条件のデータを抽出することは可能なものでしょうか? (1)テーブルAに存在するが、テーブルBにはない (2)テーブルBに存在するが、テーブルAにはない (3)テーブルAとBの両方に存在するが、項目のいずれかが異なる。 なお、テーブルBには、テーブルAには存在しない項目がありますが、 その項目は比較対象外です。 お知恵を拝借できましたら、とてもありがたいです。 よろしくお願いいたします。 ■テーブルA Key Komoku1 Komoku2 001 1000 2000 002 2000 3000 005 3000 4000 006 4000 5000 ■テーブルB Key Komoku1 Komoku2 Komoku3 001 1000 2000 X1 003 2000 3000 X2 005 3000 5000 X3 006 4000 5000 X4 ■結果 Key Komoku1 Komoku2 002 2000 3000 003 2000 3000 005 3000 4000 (あるいは 005 3000 5000) ※005はテーブルA,B両方には存在するが、koumoku2の値が違う例です。 その場合、どちらのテーブルの値を出力しても構いませんし、あるいは両方を 出力しても構いません。 よろしくお願いいたします。

  • テーブルから特定の値を取得する方法を探しています

    OracleのPL/SQLを勉強し始めたものですが、質問させていただきます 。 あるテーブルにINSERT文を使ってデータを追加するストアドファンク ションを作成しています。 そのINSERT文の中に、ある列(NUMBER型)の今現在の最大値にプラス1し て新規にレコードを追加するという処理を入れる方法を探しています 。 BEGIN INSERT INTO USER.テーブル1 VALUES (項目1, 項目2, 項目3 ); END 項目2に対応するテーブルの列の最大値を取得し、項目2に値を入れるには どのような方法があるでしょうか? 方法や手順等を教えてくださる方お願いします。

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

このQ&Aのポイント
  • 建物やものを作る人はたくさんいますが具体的に壊した人は永遠にその建造物やものに対して名を残すのでしょうか?
  • 東京タワーと世界一大きなダイヤモンドをへし折り砕いたとしても、世の中ではそのものを作るために働いた人たちは見過ごされがちです。
  • 壊したりした人には罰則や死刑はあるかもしれませんが、自分の名前を残したいと思う人も存在するのかもしれません。
回答を見る