私は約6Gbのデータベースに取り組んでいます。すべての非ユニコード列をユニコードに変換する必要があります。たとえば、すべてのvarcharをnvarcharに変更します。
のようなALTERステートメントを使用してこれをスクリプト化しALTER TABLE mytable ALTER COLUMN mycolumn nvarchar(...)
ましたが、その後データベースのサイズが大幅に増加したことがわかりました。.mdfファイルは70Gbを超えて成長し、私は驚きました。unicodeはvarcharのx2倍のスペースを必要とすることを知っていますが、データベースがすべてvarcharであり、変換されたとしても、最大サイズは12Gbであると予想します。
データベースとファイルを縮小して、未割り当て領域であるかどうかを確認しようとしましたが、これはほとんど効果sp_spaceused
がなく、未割り当て領域が過剰にないことを示しています。
データベースがこれほど大きくなった理由を誰かが知っていますか?私はこれを引き起こした原因を理解することに非常に熱心です。
古いデータベースからスクリプト化された新しいデータベースを作成し、すべてのデータをインポートすることで、列のデータ型をユニコードに変更できました。その結果、サイズが1Gbしか増加しなかったため、列のデータ型を変更した理由を理解したいと思います。そのような成長。