2017-08-14 75 views
1

私は10Gbと思われるSQL Server 2008 R2 Expressデータベースのファイルサイズ制限に達しました。イベントログにイベントID 1101が表示されるため、これはわかります。SQL Server 2008 R2 Express 10GBファイルサイズの制限

「PRIMARY」ファイルグループにディスク容量不足のため、データベース「ExchangeBackup」の新しいページを割り当てられませんでした

私は今の問題を回避するためにいくつかの歴史的なデータを削除したが、それは唯一であります一時的な修正。 1つのテーブル(PP4_MailBackup)は他のテーブルよりもはるかに大きいので、12ヶ月前にこのデータベースを作成したときに、このテーブルをFilestreamテーブルに変換し、ファイルシステムのFileGroupの外にデータを保存しました。これはエラーが発生し、新しいデータがデータベースに追加されなくなるまで正常に動作していたようです。

テーブルサイズに関するレポートを作成すると、予約済み(KB)列はほぼ10GBになります。私のFILESTREAMデータを保持している

フォルダには、176ギガバイト

.mdfファイルが実際に10ギガバイトであるデータベースです。

テーブルPP4_MailBackupがまだほぼ7GBを使用している理由を知っている人はいますか?ここで

がある - このデータベースの "標準レポート]> [ディスクの使用状況レポート":事前に

おかげ

デビッド

enter image description here

更新

ここにありますいくつかのより多くの情報。

この表には868,520行あります。

このcmdは1を返しますので、私はAnsipaddingがオンであると仮定しています。私はこれをデフォルトから変更したことはありません。

SELECT SESSIONPROPERTY('ANSI_PADDING') 

列は、すべての列のためのすべてのレコードがテーブルの周り4125470000バイトになり、私の概算で、フルレコードサイズを満たしている場合でも、この

enter image description here

のように定義されています。 nvarcharの列は、実際に必要なスペースのみを使用していることを理解しています。

私はまだ多くのスペースを逃しています。

+0

テーブルがなぜこのテーブルが「7GB」を占めているのかを明確に説明しているようです。補足として、LDBファイルは、データベースの10GBの記憶域の限界までカウントされている可能性があります。 –

+0

こんにちはTim、添付ファイルはPP4_Mailbackupテーブルが7GBを使用していると説明していますが、理由は説明していません。このテーブルはファイルストリームが有効です。私は176GBのファイルストリームのテーブルがまだデータベースの7GBを占有すると予想する必要がありますか?ログファイルはファイルグループの一部ではないので、それが含まれているかどうかはわかりません。今は1GBです。定期的にこのデータベースをバックアップするので、ログが切り捨てられていない理由を調べます。 –

+0

ログファイルはほとんどが空きスペースなので、正しく管理されています。私はそれを縮めることに何の意味も見ません。 –

答えて

0

本当に答えはありますが、結論はもっとありません。

私はこの問題をあきらめて、10GBのプライマリファイルサイズの制限を超えてデータを削除するために自分自身に住んでいました。私は、Unicode文字を扱うために、必要なスペースのみを使用し、スペースを使って列を埋め尽くさないにもかかわらず、nvarcharカラムが文字あたり2バイトを格納することを理解しました。だから、これは私が見つけることができない空間の一部を占めるだろう。

正しい型のデータをコピーして新しい列を追加し、古い列を削除することで、char(500)列をvarchar(500)に変換しようとしました。これは機能しましたが、列を削除するのはメタデータの変更だけで実際にはデータを削除しないため、テーブルが実際に大きくなりました。スペースを回復するためには、新しいテーブルを作成してデータをコピーし、古いテーブルを削除する必要があります。もちろん、プライマリファイルには十分なスペースがありません。

元のテーブルを削除して元のテーブルを削除した後、元のテーブルを削除すると思ったが、temp dbは(少なくとも私の知る限り)ファイルストリームのカラムをサポートしていないため、temp dbテーブル。これは疑わしい解決策のように聞こえ、私のテストサーバーはtemp dbが格納されたパーティションに十分な領域がありませんでした。私はSQL Server 2008 Expressのtempdbのファイルサイズの制限については何も見つけることができませんでしたが、この時点ではすべてが難しくなっていました。

関連する問題