• ベストアンサー

従属関係について

DTSにて、テーブルDROP後、CREATEし、同レアイウトのテーブルからデータコピー(BULK INSERT)をしています。 テーブルCREATEしたのでsysdependsの従属関係はリセットされてしまいますが、復帰させる手段はありますか。

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

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

SQL Server 2000ではおそらくテーブルを参照しているViewなりストアドなりを全部ALTERしてやるほかないと思います。 (sp_refreshsqlmoduleを実行すればいいのですが、SQL Server 2005 SP2で追加されたものなので)

関連するQ&A

  • フィールドサイズの変更方法について

    お世話になります。SQL初心者です。 VB5+ACCESS97でデータが入っているテーブルのある特定のテキスト型の列サイズを5から6に変更する必要が出てきました。 テーブル名を変えたくないのですが、 1.列サイズを変更した新テーブルをCREATE 2.元テーブルを全項目SELECTして新テーブルにINSERT 3.元テーブルをDROP 4.新テーブルと同じ属性で元テーブル名で新々テーブルをCREATE 5.新テーブルから全項目SELECTして新々テーブルにINSERT 6.新テーブルをDROP この方法しかないでしょうか。コピーのコピーで時間がかかりそうで悩んでます。 手元の書籍ではACCESS97では、テーブル名のリネームとか、ORACLEのALTER TABLEのような属性変更ができないような気がするのですが、もしコマンドをご存知でしたら併せて教えてくださると、とても助かります。 よろしくお願いします。

  • BULK INSERT

    BULK INSERTを使ってテーブルにデータを入れようとしているのですが、ファイルデータしか取り込めないのでしょうか? プログラム(C++)で生成したテーブルデータをオンメモリで引き渡してBULK INSERTとか出来ないでしょうか?

  • オラクルでデータベースに項目を追加する場合に

    オラクル初心者です教えてください。 バージョンが関係あるのかは分かりませんが、8.1.7です。 AAAテーブルに10個の項目があり、真中に項目を追加する場合に、今入っているデータを生かしたい場合にどうやってやればよいのでしょうか? ↓領域を増やす場合などはこうやっているのですが  項目がずれているので駄目ですよね? CREATE TABLE BBB AS SELECT * FROM AAA DROP TABLE AAA CREATE TABLE AAA(真ん中に項目追加後) INSERT INTO AAA SELECT * FROM BBB やっぱりINSERT分に項目を全部書かないとだめなのでしょうか?

  • 一時表 を表単位で

    お世話になっております。 Oracle10gで テーブル単位でTemporary Tableが出来ないか 試行錯誤しております。 要件として、Webアプリケーションで100万件のデータをSelectします。 その際、全データを取得するには、遅すぎるので、分割して取得しています。 現在では、C#で、サーバ側で取得Temporary Table Insertして、そのデータを参照するようにしているのですが、 Insertが遅いのと、C#に一度持ってきていますので、メモリが不安な状態です。 これを、create global temporary table CRE_TABLE_NAME as select * from TABLE_NAME にして、CRE_TABLE_NAMEを参照したいのですが、dropタイミングがつかめませんでした。 そこで、このテーブルが自動的にdropしたいのですが、何か良い案はありませんでしょうか? 思いついたのが、temporary tableにテーブル情報を保持して、sessionが切れた、時点で消えるのを利用して、テーブルdropのトリガーを記載しようと思ったのですが、そのトリガーを思いつきませんでした。 どなたか、代替案または、実装したことがある方、よろしくお願いします。

  • SQL SERVERの BULK INSERT

    SQL SERVERの BULK INSERTについて。 TESTというテーブルにtest.csvをBULK INSERTによりデータをインポートしようとしているのですが変数を使わずに下記のように書くと正常に動くのですが、 BULK INSERT TEST FROM 'C:\data\test.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) 変数を使って下記のようにすると「不適切な構文があります。」とエラーとなってしまいます。 DECLARE @data varchar(100) SET @data = 'C:\data\test.csv' BULK INSERT TEST FROM @data WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) 解決策を教えてください。

  • ID列を含むテーブルコピー、編集

    ID列を含む「テーブルA」の内容をコピー&コピーの一部項目を編集して、ID列はリセットして振り直しを行った後、「テーブルA」にINSERTするといった事をしたいのです。編集する項目、IDの項目はKEYになっている。 SQLリファレンスで調べてみましたが、SET IDENTITY_INSERT XXXX ON、DBCC CHECKIDENTなどの使い方がいまいち良くわからないのです。 1.「テーブルA」のIDENTITYをはずした形で、コピー先のテーブル「テーブルB」をCREATE。(レイアウトは全く同じ。) 2.「テーブルA」を全て、「テーブルB」(編集用)へINSERT。 3.「テーブルB」の一部項目を編集、「テーブルA」のID列に相当する項目を'1'から配番する。 4.編集後の「テーブルB」を全て、ID列を含む「テーブルA」にINSERT。 上記3、4項の方法が良くわかりません。 データテーブルは、「年度」・「履歴番号」(ID)・「その他項目多数」を持ち、編集方法は、「年度」を新年度に置換し、「履歴番号」を'1'から振り直したものを、「テーブルA」にINSERTしたいのです。 「履歴番号」(ID)の振り直しの条件はありません。レコードTOPから'1'から順に再配番されればいい。 やりたい事は単純なのですが。。。。初心者ですみません。 助言いただければと思い質問しました。

  • PL/pgSQLの使い方

    PL/pgSQLについて質問させてください。 以下のような2つのテーブルAとBがあります。 テーブルA: aid | fall0 | fall1 -----+-------+------- 001 | 0 | 0 002 | 0 | 0 テーブルB: bid | aid | fall --------+-----+------ 000001 | 001 | 0 000002 | 001 | 0 000003 | 002 | 0 000004 | 002 | 0 テーブルAとテーブルBの関係は1:nの関係です。 以下のような2つのことがやりたいです。 テーブルAのfall0,fall1,テーブルBのfallはフラグです。 今、テーブルBのaid=001であるすべての行のfallを0から1に変えたとき、 それに対応するテーブルAの行のfall1が0から1にかわる。またテーブルBのaid=001である少なくとも一つの行のfallを0から1に変えたとき、 それに対応するテーブルAの行のfall0が0から1にかわるようなプログラムを作りたいのですが、なかなかうまくいきません。今aid=001のときをやりましたが、aidは任意のときを想定しています。もし、ご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いいたします。以下は自分が書いたプログラムです。 drop table b; drop table a; create table A ( aid text primary key, fall0 integer, fall1 integer ); create table B ( bid text primary key, aid text not null references A(aid), fall integer ); insert into A values ('001',0,0); insert into A values ('002',0,0); insert into A values ('003',0,0); insert into B values ('000001','001',0); insert into B values ('000002','001',0); insert into B values ('000003','002',0); insert into B values ('000004','002',0); /* 関数の定義 */ create function tri_test() returns trigger as ' begin declare aid_rec if old.fall=0 and new.fall=1 then update a set fall1=1 where a.aid = select b.aid from b where b.fall = 1); end if; return new; end; ' language 'plpgsql'; /* トリガーの定義 */ create trigger tri_b after update or insert on b for each row execute procedure tri_test(); /* B テーブルへのデータ操作 */ update b set fall=1 where aid='001';

  • マテリアライズド・ビューの再計算について

    こんにちは ORACLE のマテビューについて困っています。 マテビューを作成して元となるテーブルを削除し再び作成してデーターを投入した後 マテビューを参照するとテーブルを削除する前の情報が表示されてリフレッシュされません どのようにしたら再作成後に投入したデーターをマテビューで表示させる事ができますでしょうか 【検証】 ◆テーブルの作成 CREATE TABLE TEST_TBL (A CHAR(2), B CHAR(5)); ◆レコードを追加 INSERT INTO TEST_TBL VALUES('01','AAA'); INSERT INTO TEST_TBL VALUES('02','BBB'); INSERT INTO TEST_TBL VALUES('03','CCC'); COMMIT; ◆マテビューの作成 CREATE MATERIALIZED VIEW MV_TEST_TBL REFRESH COMPLETE ON COMMIT AS SELECT * FROM TEST_TBL; ◆マテビューの確認 #1 SELECT * FROM MV_TEST_TBL; 3件表示される (正常) ◆レコードの追加 INSERT INTO TEST_TBL VALUES('04','DDD'); COMMIT; ◆マテビューの確認 #2 SELECT * FROM MV_TEST_TBL; 4件表示される (正常) ◆テーブルの削除 DROP TABLE TEST_TBL CASCADE CONSTRAINTS; ◆テーブルの作成 CREATE TABLE TEST_TBL (A CHAR(2), B CHAR(5)); ◆マテビューの確認 #3 SELECT * FROM MV_TEST_TBL; 4件表示される (期待としては 0件であったが) ※疑問1 テーブルのDROP & CREATE は再計算のトリガーに           ならないのか? ◆レコードの追加 INSERT INTO TEST_TBL VALUES('05','DDD'); COMMIT; ◆マテビューの確認 #4 SELECT * FROM MV_TEST_TBL; 4件表示される  ※期待としては1件だけが表示されてほしかったが 使い方としてはマテビューではなくても普通のビューでもいいのでは と思われるかもしれませんが、元となるテーブルのDROP & CREATE が システム的に発生しますがその際にビューの再作成をしたくないので マテビューを選択しました。

  • CSV形式のファイルを読み込んでテーブルに格納するには?(BULK INSERT、BCP、DTS)

    VisualBasicのカテゴリでも質問したのですが、 こちらの方が回答がつく可能性が高いのではと思い、こちらにも書き込みました。 今、 "aaa","bbb","ccc"  のような形で1レコードのCSVファイルがあります。 これをSQLServer2000上のテーブルに読込みたいのですが、 10件ほどの少ないレコードなら 各フィールドごとを変数に入れて読込み、 それをループさせてINSERT INTO すればよいのですが・・・。 大量の件数の場合時間がかかりすぎてしまいます。 それで、BULK INSERT、BCP、DTS などの利用を考えているのですが、 まず、何よりこの質問です。 (1)このようなファイル形式のものを上記の方法で読込めるのか? 実現可能なのかをまずお聞きしたいです。 どなたか、成功されている方はいらっしゃいますか? (2)BCPでファイルのフォーマットを指定したファイルを用意して試みたところ、 ""で区切られているため、その部分もフィールドに取り込まれてしまい、 binaryデータが切り詰められましたとなってしまいます。 この回避方法はないでしょうか? (3)""が余計なので、これを変換して読込むことは可能ですか? DTSはVisualBasic上からコマンドとして利用したいです。 batファイルを用意してもいいです。 困っています。どなたか助けてください。

  • 推移的関数従属について(第4正規形?)

    推移的関数従属について教えてください。 推移的関数従属  A->B->C かつ A <- Bではない 参考にしている本:  データベース午後徹底演習(2001年11月初版) ページ76P 問題: 職種テーブル  職種 言語経験 DB経験 R 17~20 10-13 SE 10~16 5 -9 P 0~9 0 -4 があり、問題文に 言語及びDBと職種の対応関係は上記のとおりとする。 言語及びDBのいずれか一方の経験ポイントが職種テーブルの該当職種のポイントに満たないような担当者はいないものとする。 たとえば職種がSEの人は、必ず言語経験が10-16のポイントで、かつDB経験は5-9の間のポイントである。 これから、  言語経験 -> 職種  DB経験 -> 職種 を導きましたが、解説を見ると、 {言語経験、DB経験}は、多値従属性が存在するが、値を一意に決定することができない となっています。 多値従属性を理解していないのが原因かもしれませんが、なぜ一意に決定できないのでしょうか? (1つの値に対して、「1つ以上の」値が対応する)が定義なのですが、上記の説明を見ると一意に特定できると思うのですが。 データを登録するときにそのような制約を儲けていないからダメということなんでしょうか? よろしくお願いします