سوال خود را بپرسید

توضیحات بخش

rss
سوال و جواب برای متخصصان و علاقه مندان به برنامه نویسی در همه زبان ها و همه پلت فرم ها

آمار بخش

کاربران 29
سوال ها 71
پاسخ ها 80
نظر سنجی ها 0

برترین کاربر ها

بیشترین تگ ها

2

بدست آوردن حجم جدول های بانک اطلاعاتی sql server

من یک بانک اطلاعاتی SQL Server نسبتاً بزرگ دارم.
با توجه به داده هایی که در آن قرار دارد، به نظر می رسد فضای بیشتری را از آنچه که انتظار داشته باشم را استفاده می کند.
آیا روش مشخصی برای تعیین میزان فضای استفاده شده از دیسک برای هر جدول وجود دارد؟
پاسخ به سوال
979بازدید

پاسخ ها (1)

2
برای اینکار می تونید از کوئری زیر استفاده کنید.

SELECT 
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
TotalSpaceMB DESC, t.Name

پاسخ به سوال
تعداد حروف 0