1

私の既存のデータベースは、SQL Server 2005 - バージョン 9.0.5000 上にあります。SQL Server 2008 R2 への移行

5億行以上のデータからなる巨大なテーブルがあります。列は複合主キーPriceListDateとして定義され、その一部です。varchar(8)さらに悪いことに、テーブルはこの列で分割されています。

DBを改造する機会が来ましたのでinteger、このカラムのデータ型を に変更しようと考えています。ただし、これを行う簡単な方法はないようですが、新しいデータ型で別のテーブルを作成するには、データを移行してから、古いテーブルとパーティション スキームと関数を削除します。

このアプローチで注意すべき点はありますか? または、代替のより良いアプローチはありますか?

ラージ

4

1 に答える 1

1

ここにいくつかの考えがあります:

そのままにしておくと、この古いテーブルを履歴テーブルとして使用し、新しいデータ用に新しいレイアウトで別のテーブルを作成し、それらの両方または必要なものにアクセスするためのビューや SP を作成できます。

データ型を変更することにした場合: - プロセスは制御可能である必要があるため、いずれにせよバッチで実行する必要があります - 既存のパーティショニングを活用することをお勧めします。

私の解決策は次のとおりです: 3 つのテーブルを設定します: Old_Big_Table、Temp_table (古い構造、インデックス、パーティション) および New_Table (新しい構造、別のパーティション スキームと機能)

各パーティションについて:

  1. 1 つのパーティションを Temp_table に切り替えます
  2. インデックスを削除
  3. データ型の変更
  4. 新しい PS と PF の新しいレイアウトに従ってインデックスを作成します
  5. パーティションを New_table に切り替えます
  6. Temp_table に新しいインデックスをドロップする
  7. 古い PS と PF の Temp_table に古いインデックスを作成する
  8. オプション: この繰り返しの結果を Log_table に記録します

ステップ 7 では、PS および PF に古いインデックスを作成する必要はありません。インデックスの構造が同じであれば、それで十分です。

于 2013-05-29T15:39:25.290 に答える