3200万行あるテーブルのテーブルのカラムのデータ型をsmallintからintに変更する作業があります。要件は、ダウンタイムを最小限に抑えることです(基本的にこれを達成する最速の方法です)。 SQL Server 2000を使用しています。MS SQL Serverのカラム定義を変更する最速の方法
助けてください!
3200万行あるテーブルのテーブルのカラムのデータ型をsmallintからintに変更する作業があります。要件は、ダウンタイムを最小限に抑えることです(基本的にこれを達成する最速の方法です)。 SQL Server 2000を使用しています。MS SQL Serverのカラム定義を変更する最速の方法
助けてください!
いくつかのオプションがあります。テーブルのオンラインコピーを作成してから、sp_renameを使用してテーブルを切り替えることができます。
もう1つの方法は、新しい列を追加し、それを移入してから古い列を削除し、新しい列の名前を変更することです。
32mの行は、行の幅に応じて大きくても小さくても構いません。
何をしても、Enterprise Managerを使用してデータ型を変更しないでください。それは、新しいテーブル全体を作成し、そのテーブルを作成し、古いテーブルの名前を変更し、新しいテーブルの名前を古いテーブルの名前に変更し、それを数時間にわたってテーブルをロックする1つの厄介なトランザクションにまとめます。
ベンチマークでは、sp_renameが最もダウンタイムの短いオプションであることがわかります –
sp_renameは高速ですが、行が広い場合はテーブルコピーに時間がかかることがあります。 sp_renameの前に宛先テーブルを更新します。現場版では、変更された行を移入して更新し、その列の名前を変更することができます。おそらく、ダウンタイムとは何か、そしてどのくらいのアクティビティがテーブル上で起こっているかに完全に依存するメンテナンスウィンドウの残りの部分が何であるかによって異なります。 –