緒事情により、DBのファイルサイズが実データに比してとても大きくなってしまい、メンテナンスのためにデータ移行(Export/Import)をさせないといけなくなりました。
SSISのパッケージでもExport/Importは出来ますが、そのままではかゆいところに手が届かないので、その他のスクリプトを併用しつつ準備を進めています。
さて、データの登録/削除のテストをしている時に、テーブルに制約があるとデータの削除が(もちろん)うまく行えません。
制約の削除ではなく、無効化ってどうするんだっけ...と調べてみると、NOCHECKオプションで指定すれば良いということが分りました。
でも、根が横着者なので、全部のテーブルの制約を無効化するにはどうしたらいいかな....と考え、ストアドを作ってみました。(ストアドについては、Articleの方に載せてみました: [ DB内のオブジェクト(テーブル)の全部の制約を無効/有効にする ] )
一応期待通り、まとめて外部キーの制約を無効化/有効化できるようにはなったのですが、制約が無効であっても、TRUNCATEはできないんですね....。
#Oracleは出来たと思ったのですが、違ったかな?
DELETEは出来てもTRUNCATEさせたい場合は制約を削除しないといけないので、やっぱり、ちゃんとCreate TableとかDROP Constraint/ADD ConstraintのSQLを用意しておかないとダメなのかなあ、と思いました....。