SQL Server 2008 データベースのサイズを調べる必要があります。次のストアドプロシージャを使用しました
EXEC sp_spaceused
次のデータ、データベース名、データベース サイズ、未割り当て領域、予約済み、データ、index_size、未使用が返された場合
特定のテーブルを除いて、データベースのサイズを取得する方法はありますか?
このクエリを使用して、各データベース テーブルの予約サイズを取得できます
DECLARE @LOW int
SELECT @LOW = LOW
FROM [master].[dbo].[spt_values] (NOLOCK)
WHERE [number] = 1 AND [type] = 'E'
SELECT TableName,[Row Count],[Size (KB)] FROM
(
SELECT QUOTENAME(USER_NAME(o.uid)) + '.' +
QUOTENAME(OBJECT_NAME(i.id))
AS TableName
,SUM(i.rowcnt) [Row Count]
,CONVERT(numeric(15,2),
(((CONVERT(numeric(15,2),SUM(i.reserved)) * @LOW) / 1024))) AS [Size (KB)]
FROM sysindexes i (NOLOCK)
INNER JOIN sysobjects o (NOLOCK)
ON i.id = o.id AND
((o.type IN ('U', 'S')) OR o.type = 'U')
WHERE indid IN (0, 1, 255)
GROUP BY
QUOTENAME(USER_NAME(o.uid)) + '.' +
QUOTENAME(OBJECT_NAME(i.id))
HAVING SUM(i.rowcnt) > 0
) AS Z
ORDER BY [Size (KB)] DESC
しかし、これはテーブルごとに予約されたサイズしか与えないので、少し混乱します。予約サイズは?各データベース テーブルの予約サイズを合計しても、データベース サイズにはなりません。