SQL Server 2005 檢視資料庫表的大小 按照表大小排列
(1)Question:尼瑪一個資料庫,動輒幾十個G,傷不起啊,怎樣才能知道當前資料庫裡面各個表的大小呢?以便將部分較大的資料庫表中不容易被頻繁訪問的資料歸檔到歷史表中,例如每天將一個自然年以前的資料放入歷史表中。
(2)Key:網上搜了一圈,關鍵字sp_spaceused (參見:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx)
(3)Sample:同時找到了一個示例(參見:http://www.linuxso.com/linuxxitongguanli/519.html 推薦: SQL Server 2005 檢視資料庫表的大小 按照表大小排列),下面就將這個示例的程式碼原樣抄寫下來,供大家分享啦!對了,我在2005上驗證過,程式碼沒有什麼大問題。
(4)Code:
原文地址:http://bbs.csdn.net/topics/380068082
(2)Key:網上搜了一圈,關鍵字sp_spaceused (參見:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx)
(3)Sample:同時找到了一個示例(參見:http://www.linuxso.com/linuxxitongguanli/519.html 推薦: SQL Server 2005 檢視資料庫表的大小 按照表大小排列),下面就將這個示例的程式碼原樣抄寫下來,供大家分享啦!對了,我在2005上驗證過,程式碼沒有什麼大問題。
(4)Code:
(4.1)將表大小佔用情況存放到新建立的 tablespaceinfo表中
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --建立結果儲存表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空資料表
declare @tablename varchar(255) --表名稱
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select o.name
from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
and o.name not like N'#%%' order by o.name
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
據說:sp_spaceused的結果有時是不準確的, 要加updateusage選項才行,修改版:
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --建立結果儲存表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空資料表
declare @tablename varchar(255) --表名稱
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select o.name
from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
and o.name not like N'#%%' order by o.name
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname,@updateusage=true',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
(4.2)檢視當前資料庫大小情況--itlearner注:顯示資料庫資訊
sp_spaceused @updateusage = 'TRUE'
(4.3)檢視存放了當前資料庫各個表大小的tablespaceinfo表中記錄--itlearner注:顯示錶資訊
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
原文地址:http://bbs.csdn.net/topics/380068082
相關文章
- 用SQL命令檢視Mysql資料庫大小MySql資料庫
- MYSQL-檢視資料庫或表的大小MySql資料庫
- SQL Server檢視所有表大小,所佔空間SQLServer
- 檢視Sql Server的log檔案大小SQLServer
- 如何獲取 PostgreSQL 資料庫中的表大小、資料庫大小、索引大小、模式大小、表空間大小、列大小SQL資料庫索引模式
- SQL Server統計資料庫中表大小SQLServer資料庫
- MySQL命令檢視資料庫和表容量大小MySql資料庫
- 檢視資料庫大小的通用命令:資料庫
- 檢視oracle資料庫真實大小Oracle資料庫
- 檢視資料庫資料檔案的總大小資料庫
- SQL Server 檢視錶佔用空間大小SQLServer
- SQL Server 監視資料檔案大小變化SQLServer
- 檢視MySQL資料庫大小的方法總結MySql資料庫
- 檢視資料檔案大小
- sqlServer的資料庫回縮與表大小檢查。SQLServer資料庫
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- 修改Oracle資料庫表的大小Oracle資料庫
- SQL Server 2005預設區分大小寫SQLServer
- 用命令檢視Mysql中某個資料庫的大小?MySql資料庫
- SQL Server 檢視資料庫日誌SQLServer資料庫
- SQL Server 資料儲存與 NTFS 簇的大小SQLServer
- SQL Server資料庫檢視一個資料表各列的註釋SQLServer資料庫
- 檢視ORACLE中表、表空間的大小Oracle
- Linux檢視資料夾大小duLinux
- 匯出Sql server 2005資料庫中某表的資料SQLServer資料庫
- Linux檢視MYSQL資料庫容量大小命令LinuxMySql資料庫
- SQL SERVER 2012查詢資料庫和所有表的大小方法彙總SQLServer資料庫
- [Mysql]檢視每個資料庫大小以及每個表最後的修改時間MySql資料庫
- sql server 大小寫敏感SQLServer
- SQL Server資料儲存與NTFS簇的大小PXSQLServer
- 檢視硬碟大小硬碟
- 檢視錶大小
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- 檢視ORACLE的表所佔空間大小Oracle
- MySQL 庫大小、表大小、索引大小查詢命令MySql索引
- 獲取資料庫表的資訊(大小,索引大小,建立時間,行數)資料庫索引
- aix下檢視各個資料夾大小AI
- Linux資料夾大小檢視辦法Linux