如何在SQL中测量表中的表大小(以GB为单位)

cMi*_*nor 6 sql-server size double

在上一个问题中 @Morawski说"一个包含1,000列和44,000行的表它大约有330 MB;这就是浏览器只使用几个打开的选项卡".

该表应该具有多少列和行来告诉它的大小 > 10 GB (假设该表只有双值).

@Morawski如何得出结论,1,000列和44,000是330MB

是否有任何脚本可以在SQL中告诉它?

Jon*_*ton 12

有一个sproc调用sp_spaceused.不知道这是否是@Morawski所使用的,但作为一个dev db的一个例子我很方便:

exec sp_spaceused 'aspnet_users'
Run Code Online (Sandbox Code Playgroud)

name          rows    reserved     data      index_size     unused
------------- ------- ------------ --------  ------------   ---------- 
aspnet_Users  3       48 KB        8 KB      40 KB          0 KB
Run Code Online (Sandbox Code Playgroud)


小智 7

-- Measures tables size (in kilobytes)
-- Tested in MS SQL Server 2008 R2

declare @t table (
name nvarchar(100), [rows] int, [reserved] nvarchar(100), [data] nvarchar(100), [index_size] nvarchar(100), [unused] nvarchar(100)
)
declare @name nvarchar(100)

declare tt cursor for
Select name from sys.tables
open tt

fetch next from tt into @name
while @@FETCH_STATUS = 0
begin
  insert into @t
  exec sp_spaceused @name
  fetch next from tt into @name
end

close tt
deallocate tt

select name as table_name, [rows] as rows_count, data + [index] as total_size, data as data_size, [index] as index_size
from (select name,
[rows],
cast (LEFT(data, LEN(data)-3) as int) data,
cast (LEFT(index_size, LEN(index_size)-3) as int) [index]
 from @t
) x
order by 3 desc, 1
Run Code Online (Sandbox Code Playgroud)