如何知道一行记录实际存储的大小?

simonvc 2003-11-22 09:53:12
此处可能有两种情况:
1. 8K以内, 除开存储图片/大文本的字段
2. 包括存储图片/大文本的字段

请帮忙讨论!
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxc2003 2003-11-24
  • 打赏
  • 举报
回复
同意 pengdali(大力 V3.0)
pengdali 2003-11-22
  • 打赏
  • 举报
回复
declare @表名 varchar(1000),@编号 varchar(100)
select @表名='Table1',@编号='2423dfsds'


------------------------------------
declare @sql varchar(8000)
set @sql=''
select @sql=@sql'+datalength('+name+')' from syscolumns where id=object_id(@表名)

set @sql=substring(@sql,2,8000)
exec('select '+@sql+' 某一条记录大小 from '+@表名+' where 编号='''+@编号+'''')

pengdali 2003-11-22
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql=''
select @sql=@sql'+datalength('+name+')' from syscolumns where id=object_id('表名')

set @sql=substring(@sql,2,8000)
exec('select '+@sql+' 大小 from 表名 where 编号=45')
zjcxc 元老 2003-11-22
  • 打赏
  • 举报
回复
--得到数据库中所有表的空间/记录情况

create table #tb(表名 sysname,记录数 int
,保留空间 varchar(10),使用空间 varchar(10)
,索引使用空间 varchar(10),未用空间 varchar(10))

insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?'''

select * from #tb

go
drop table #tb

zjcxc 元老 2003-11-22
  • 打赏
  • 举报
回复
难算.

马可的方法可以考虑.
txlicenhe 2003-11-22
  • 打赏
  • 举报
回复
Select datalenth(字段1)+datalenth(字段2)+...+datalenth(字段N)
from 表 where ...
txlicenhe 2003-11-22
  • 打赏
  • 举报
回复
就用每个字段的datalength相加应该差不多吧。
txlicenhe 2003-11-22
  • 打赏
  • 举报
回复
表空间:
http://expert.csdn.net/Expert/topic/2304/2304496.xml?temp=.4730493

算一行记录的空间? 先找找看。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧