gpt4 book ai didi

sql - sp_spaceused 如何计算具有 BLOB/溢出/行外类型的表的大小?

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:19 25 4
gpt4 key购买 nike

我的要求是计算我的 SQL Server 数据库中的表大小。

为此,我使用预定义的 SP,sp_spaceused。但是,如果我的表中有 BLOB 类型的列(如 varbinary(max)FILESTREAM varbinary(max)),那么大小是如何计算的?

  • 案例 1:如果表有 varbinary(max) 列,大小是否包含二进制数据?

  • 案例 2:如果表包含 FILESTREAM varbinary(max) 类型的列,那么大小是否包括二进制数据?出现这种情况是因为二进制数据存储在 Windows 文件系统中。

你能帮我解决这个问题吗?

最佳答案

我认为在 dba stackexchange 中可以更好地回答您的问题.但是,我使用以下 SQL 命令来获取表大小:

SELECT 
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
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 t.Name

它适用于CASE 1,但是,我不确定第二种情况。

关于sql - sp_spaceused 如何计算具有 BLOB/溢出/行外类型的表的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48145932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com