私は約6Gbのデータベースで作業しています。すべての非ユニコード列をユニコードに変換する必要があります。すべてのvarcharをnvarcharに変更します。非常に大きなデータベースファイルを引き起こすデータ型を変更するためのテーブルを変更
ALTER TABLE mytable ALTER COLUMN mycolumn nvarchar(...)
のようなALTER文を使用してスクリプトを作成しましたが、後でデータベースサイズが大きく増加することがわかりました。 .mdfファイルは70Gb以上になり、私を驚かせました。私はユニコードがvarcharのx2倍のスペースを取っていることを知っていますが、データベースがすべてvarcharで変換されたとしても、最大サイズは12Gbと予想されます。
私はそれが未割り当て領域だったかどうかを確認するために、データベースとファイルを縮小しようとしたが、この持っていたほとんど効果とsp_spaceused
は、未割り当て領域の過剰量がないことを示しました。
データベースが非常に大きくなった理由を知っている人はいますか?私はこれが何を引き起こしたのか理解したいと思っています。
以前のデータベースからスクリプトを作成し、すべてのデータをインポートする新しいデータベースを作成し、その結果が1Gbのサイズの増加であったため、列データ型をUnicodeに変更できました。列データ型はこのような成長を引き起こしました。
返信ありがとうございます。残念ながら、それは.mdfファイルではなく、.ldfファイル大規模に成長している。 – Stefg
テーブルに低い充填率のインデックスがクラスタ化されているかどうかを確認します。いくつかの大きなものでDBCC DBREINDEXを作成し、結果を確認してください。 nvarcharが非常に大きく、塗りつぶし係数が低い場合は、テーブル用に多くのスペアスペースを確保できます。これは、clusterd索引にのみ適用されます。 – JotaBe
あなたは正しかったJotaBe ...それはログファイルでした!私はデータベースの復元に間違いを犯し、ログファイルをデータファイルがあったディレクトリとログディレクトリのデータファイルに入れました。それでそれを説明すると、私は2つのファイルを混乱させていました。ご協力いただき誠にありがとうございます。 – Stefg