私は混乱しています。 AFAIK SQL Server 2005 Expressには、4GBdatabasedataサイズの制限があります。ただし、sp_spaceused
の結果は次のとおりです。
space left
ですか?index_size
は制限に含まれますか?これが私が here から恥知らずにリッピングした良いスクリプトです:
use [Insert DB Name]
select
a.FILEID,
[FILE_SIZE_MB] =
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a
これは、各DBファイルの空き領域(複数のファイルがあり、誰かがそれぞれにいくつかのオブジェクトを配置するように設定した可能性があります)と空きサイズを提供するので、これは良いことです。
たとえば、3GBの空き容量がある4GBのデータファイルがあるとします。たぶん、1 MDF大量のデータはありませんが、大量のデータを含むNDFがあります。このクエリは、各ファイルの空きサイズとそのファイルが割り当てられているDBを通知します。追加することを忘れないでください。各DBの「SPACE_USED_MB」をすべて増やして、合計サイズを取得します。
幸運を!
編集:サポートされていないバグのあるコマンドを削除しました。このクエリのためにここに投稿することで回避できると思いました。 :(
データベースのサイズはファイルのサイズです。データファイルの実際のサイズを確認します(トランザクションログはカウントされません)。はい、インデックスはカウントされます。スペースが不足している場合は、SQL 2012 Expressへのアップグレードを検討してください。これにより、サイズ制限が10ギガに増加します。
Sp_spaceusedが、データファイル/インデックスを含む最初の結果セットで約25 GBのdatabase_sizeを示している場合、andトランザクションログ。 SQL Server Expressの制限にカウントされるのは実際のデータとインデックスのみなので、2番目の結果セットのように約3.3 GBのデータがあり、残りの22 GBがトランザクションログになります。 "sp_helpdb"を実行すると、データの使用状況とトランザクションログの使用状況が2つの別々の行に報告されるため、実際の状況が表示されます。