緒事情により、DBのファイルサイズが実データに比してとても大きくなってしまい、メンテナンスのためにデータ移行(Export/Import)をさせないといけなくなりました。

SSISのパッケージでもExport/Importは出来ますが、そのままではかゆいところに手が届かないので、その他のスクリプトを併用しつつ準備を進めています。

さて、データの登録/削除のテストをしている時に、テーブルに制約があるとデータの削除が(もちろん)うまく行えません。

制約の削除ではなく、無効化ってどうするんだっけ...と調べてみると、NOCHECKオプションで指定すれば良いということが分りました。

でも、根が横着者なので、全部のテーブルの制約を無効化するにはどうしたらいいかな....と考え、ストアドを作ってみました。(ストアドについては、Articleの方に載せてみました:  [ DB内のオブジェクト(テーブル)の全部の制約を無効/有効にする ] )

一応期待通り、まとめて外部キーの制約を無効化/有効化できるようにはなったのですが、制約が無効であっても、TRUNCATEはできないんですね....。

#Oracleは出来たと思ったのですが、違ったかな?

DELETEは出来てもTRUNCATEさせたい場合は制約を削除しないといけないので、やっぱり、ちゃんとCreate TableとかDROP Constraint/ADD ConstraintのSQLを用意しておかないとダメなのかなあ、と思いました....。