视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
查询sql数据库中表占用的空间大小
2020-11-09 13:50:04 责编:小采
文档


1.SQL统计数据,大量事务操作后可能不准 exec sp_spaceused '表名' 2.准确的表空间大小,但可能会花些统计时间 exec sp_spaceused '表名', true 3.数据库大小查询 exec sp_spaceused 4.所有用户表空间表小,SQL统计数据,,大量事务操作后可能不准 exec sp_M

  1.SQL统计数据,大量事务操作后可能不准

  exec sp_spaceused '表名'

  2.准确的表空间大小,但可能会花些统计时间

  exec sp_spaceused '表名', true

  3.数据库大小查询

  exec sp_spaceused

  4.所有用户表空间表小,SQL统计数据,,大量事务操作后可能不准

  exec sp_MSforeachtable "exec sp_spaceused '?'"

  5. 所有用户表空间表小,,大数据库慎用

  exec sp_MSforeachtable "exec sp_spaceused '?',true"

  create table #t(

  name varchar(200),

  rows int,

  reserved varchar(25),

  data varchar(25),

  index_size varchar(25),

  unused varchar(25))

  exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"

  select TOP 100 * from #t ORDER BY rows DESC

  drop table #t

  sp_MSforeachtable使用方法

  1)说明

  系统存储过程sp_MSforeachtable和sp_MSforeachdb,是微软提供的两个不公开的存储过程,从ms sql 6.5开始。

  存放在SQL Server的MASTER数据库中。

  2)参数说明:

  @command1 nvarchar(2000), --第一条运行的SQL指令

  @replacechar nchar(1) = N'?', --指定的占位符号

  @command2 nvarchar(2000)= null, --第二条运行的SQL指令

  @command3 nvarchar(2000)= null, --第三条运行的SQL指令

  @whereand nvarchar(2000)= null, --可选条件来选择表

  @precommand nvarchar(2000)= null, --执行指令前的操作(类似控件的触发前的操作)

  @postcommand nvarchar(2000)= null --执行指令后的操作(类似控件的触发后的操作)

  3)举例

  --统计数据库里每个表的详细情况

  exec sp_MSforeachtable @command1="sp_spaceused '?'"

  --获得每个表的记录数和容量:

  EXEC sp_MSforeachtable @command1="print '?'",

  @command2="sp_spaceused '?'",

  @command3= "SELECT count(*) FROM ? "

  --获得所有的数据库的存储空间:

  EXEC sp_MSforeachdb @command1="print '?'",

  @command2="sp_spaceused "

  --检查所有的数据库

  EXEC sp_MSforeachdb @command1="print '?'",

  @command2="DBCC CHECKDB (?) "

  --更新PUBS数据库中已t开头的所有表的统计:

  EXEC sp_MSforeachtable @whereand="and name like 't%'",

  @replacechar='*',

  @precommand="print 'Updating Statistics.....' print ''",

  @command1="print '*' update statistics * ",

  @postcommand= "print''print 'Complete Update Statistics!'"

  --删除当前数据库所有表中的数据

  sp_MSforeachtable @command1='Delete from ?'

  sp_MSforeachtable @command1 = "TRUNCATE TABLE ?"

  4)参数@whereand的用法

  @whereand参数在存储过程中起到指令条件的作用,具体的写法如下:

  @whereend,可以这么写 @whereand=' AND o.name in (''Table1'',''Table2'',.......)'

  例如:我想更新Table1/Table2/Table3中NOTE列为NULL的值

  sp_MSforeachtable @command1='Update ? Set NOTE='''' Where NOTE is NULL',@whereand=' AND o.name in (''Table1'',''Table2'',''Table3'')'

  5)"?"在存储过程的特殊用法,造就了这两个功能强大的存储过程

  这里"?"的作用,相当于DOS命令中、以及我们在WINDOWS下搜索文件时的通配符的作用。

下载本文
显示全文
专题