2012-02-08 22 views
2

Moneyデータ型を使用している金額を格納する巨大なデータテーブル(2億以上のレコード)があります。私はこのフィールドの精度を8かそこらの小数点まで増やす必要があります。巨大テーブルの金額フィールドの精度を向上

今、私は単に私は誰もが、これは実行する方法のアイデアを持っている場合けれども知りたい、そしてデータの損失のリスクがあるかどうかでしょう

ALTER TABLE CashTable ALTER COLUMN Cash decimal(23,8) null 

を行くことができます。あなたがオンライン操作としてこれを行うために必要なので、もし舞台裏

+0

これをオンラインで行う必要がありますか、これを行うことができるメンテナンスウィンドウがありますか?データベースの復旧モデルとは何ですか? –

答えて

1

おかげで、これはダウンロックのオーバーヘッドを維持するために、私ならば、トランザクション・サイズを縮小するために、各行に新しい固定長列を追加します私はこれを明示的に行うだけでしたか?

ALTER TABLE CashTable ADD COLUMN Cash2 decimal(23,8) null 

その後Cash列と同期を維持し、バッチで新しい列を更新するためにINSERTUPDATEトリガーを追加します。

テーブル全体が同期されると、元の列が削除され、新しい列の名前が変更されます。うまくいけば、列の順序の順序に依存するコードはありません。

money-922,337,203,685,477.5808922,337,203,685,477.5807)の範囲に対応できるため、データが失われる危険性はありません。

関連する問題