记录生活

查看数据库或表的空间占用情况

<Category: SQL Server> 查看评论

--查询数据库或表的空间分配情况

use   IOneDatabase
  exec   sp_spaceused     --查询数据库中的空间分配情况   

  exec   sp_spaceused   N'app_image'     --查看表的空间占用情况

---------------------------------------------------------------------------

if exists (select * from sysobjects where id = object_id(N'[dbo].[s_SpaceUsed]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[s_SpaceUsed]
GO

Create procedure s_SpaceUsed
@SourceDB	varchar(128)
as
/*
exec s_SpaceUsed 'mydb'
*/

set nocount on

declare @ varchar(128)
	create table #tables(name varchar(128))

	select @ = 'insert #tables select TABLE_NAME from ' + @SourceDB + '.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = ''BASE TABLE'''
	exec (@)

	create table #SpaceUsed (name varchar(128), rows varchar(11), reserved varchar(18), data varchar(18), index_size varchar(18), unused varchar(18))
	declare @name varchar(128)
	select @name = ''
	while exists (select * from #tables where name > @name)
	begin
		select @name = min(name) from #tables where name > @name
		select @ = 'exec ' + @SourceDB + '..sp_executesql N''insert #SpaceUsed exec sp_spaceused ' + @name + ''''
		exec (@)
	end
	select * from #SpaceUsed
	drop table #tables
	drop table #SpaceUsed
go

------------------------------------

exec s_SpaceUsed 'IOneDatabase'

Reference:http://msdn.microsoft.com/en-us/library/ms188776.aspx

http://www.nigelrivett.net/SQLAdmin/SpaceUsedAllTables.html

本文来自: 查看数据库或表的空间占用情况



发表评论

您必须登录后才能发表评论。