パーティション スキーマの一部である DATETIME フィールドを持つ非常に大きなテーブル (800GB) があります。このフィールドの名前は tran_date です。私が抱えている問題は、インデックスがパーティションに適切に配置されておらず、NULL 可能に設定されているため、PRIMARY KEY に tran_date フィールドを含めることができないことです。
すべての外部キー関係、統計、およびインデックスを削除できますが、パーティション スキーマがまだ tran_date 列に依存しているため、列を変更できません。
私の調査では、パーティションからテーブルを移動する 1 つの方法を見つけました。これは、クラスター化インデックスを削除し、クラスター化インデックスを PRIMARY ファイル グループに再書き込みして、列を変更できるようにしますが、この操作には時間がかかります。ドロップするのに数時間、一時的な CLUSTERED INDEX を PRIMARY に書き込むのに 13 時間かかり、それをドロップしてテーブルを変更し、CLUSTERED INDEX を適切に書き直す必要があり、さらに 13 時間かかります。さらに、複数のテーブルがあります。
開発環境で同様のサイズのデータ セットを使用してこの展開をテストしたところ、完了するまでに数日かかったので、今回は削減する方法を探しています。
PRIMARY に CLUSTERED INDEX を書き込むことなくテーブルをパーティションから移動できれば、列の変更に必要な時間が大幅に短縮されます。