最近、私は、ファイル グループを使用して設計されていない古いデータベースを再構築しようとしており (デフォルトのみPRIMARY
)、とりわけ、一連のテーブルをData
SAN 上にある新しいファイル グループに移動しようとしています。データを移行する方法を知っています:
ALTER TABLE MyTable
DROP CONSTRAINT PK_MyTable WITH (MOVE TO [MyDB_Data])
ALTER TABLE MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY CLUSTERED (MyID)
ON [MyDB_Data]
しかし、これが私が今までにやらなければならなかった最も退屈な仕事ではない場合は気の毒です. そして、エラーが発生しやすいです。ある時点で、PK に値の列の 1 つを誤って含めてしまったことに気付く前に、30 GB のテーブルを移動する途中 (進行状況インジケーターがないためだと思います) でした。だから私は最初からやり直さなければなりませんでした。
テーブルに多くの依存関係がある場合はさらに悪化します。次に、主キーを削除することはできません。それを参照するすべての外部キーを削除して再作成する必要があります。これにより、何百行ものボイラープレートが発生します。テーブルを 100 倍すると、実に馬鹿げたものになります。手首が痛い。
誰かがこれのショートカットを思いついたことがありますか? それを実行できるツールはありますか (1 回限りの使用を考慮して価格設定されています)。おそらく、ここにいる誰かが以前にこのプロセスを経なければならず、共有しても構わない独自のツール/スクリプトを作成したことがありますか?
SSMSは明らかにそれを行いません-クラスター化されていないインデックスの移行スクリプトのみを生成できます(そして、それらはUNIQUE
制約ではなくインデックスである必要があります-少なくともいくつかのテーブルでは、良くも悪くも、クラスター化されたインデックスは実際にはありません主キー、それは別のUNIQUE
制約です)。
構文が複雑すぎてコード生成を書けないというわけではありません。少なくとも、基本的な主キーの削除と再作成の部分については。しかし、すべての依存関係を把握し、すべての外部キーの削除/再作成スクリプトを生成するオーバーヘッドを追加すると、すべてのテーブルを実行するよりも、自動化して完全にテストする方が多くの作業が必要なしきい値を超えているように感じ始めます。上記の例のように手動で。
問題は、このプロセスを合理的に簡単な方法で自動化できるかどうかです。 私が上に書いたことに代わるものはありますか?
ありがとう!