SQL SERVER 2012查詢資料庫和所有表的大小方法彙總
檢視某個庫和某張表的大小:
# sqlcmd -S 192.168.0.1 -U SA -P 'XXXXXXX'
1> use test
2> go
已將資料庫上下文更改為 'test'。
1> EXEC sp_spaceused
2> go
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
test 358392.19 MB 61140.89 MB
reserved data index_size unused
------------------ ------------------ ------------------ ------------------
303655216 KB 151521704 KB 150348640 KB 1784872 KB
1>
2>
3>
4>
5> EXEC sp_spaceused 'owe_test';
6> go
name rows reserved data index_size unused
-------------------------------------------------------------------------------------------------------------------------------- -------------------- ------------------ ------------------ ------------------ ------------------
owe_test 23044925 90553168 KB 28877832 KB 61365144 KB 310192 KB
1>
查詢test資料庫中的所有表的大小
方法1:
use test
將資料庫上下文更改為 'test'。
CREATE PROCEDURE [dbo].[sp_UpdateTableSpaceInfo]
AS
BEGIN
--查詢是否存在結果儲存表
IF NOT EXISTS (SELECT * FROM sysobjects where id = OBJECT_ID(N'temp_tableSpaceInfo') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
--不存在則建立
CREATE TABLE temp_tableSpaceInfo
(name NVARCHAR(128),
rows char(11),
reserved VARCHAR(18),
data VARCHAR(18),
index_size VARCHAR(18),
unused VARCHAR(18))
END
--清空資料表
DELETE FROM temp_tableSpaceInfo
--定義臨時變數在遍歷時儲存表名稱
DECLARE @tablename VARCHAR(255)
--使用遊標讀取資料庫內所有表表名
DECLARE table_list_cursor CURSOR FOR
SELECT name FROM sysobjects
WHERE OBJECTPROPERTY(id, N'IsTable') = 1 AND name NOT LIKE N'#%%' ORDER BY name
--開啟遊標
OPEN table_list_cursor
--讀取第一條資料
FETCH NEXT FROM table_list_cursor INTO @tablename
--遍歷查詢到的表名
WHILE @@FETCH_STATUS = 0
BEGIN
--檢查當前表是否為使用者表
IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(@tablename) AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
--當前表則讀取其資訊插入到表格中
EXECUTE sp_executesql N'INSERT INTO temp_tableSpaceInfo EXEC sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename
END
--讀取下一條資料
FETCH NEXT FROM table_list_cursor INTO @tablename
END
--釋放遊標
CLOSE table_list_cursor
DEALLOCATE table_list_cursor
END
GO
使用的時候,執行下面的語句:
EXEC sp_UpdateTableSpaceInfo;
go
SELECT * FROM temp_tableSpaceInfo;
go
方法2:
use test
將資料庫上下文更改為 'test'。
declare @table_spaceused table
(name nvarchar(100)
,rows int
,reserved nvarchar(100)
,data nvarchar(100)
,index_size nvarchar(100)
,unused nvarchar(100)
)
insert into @table_spaceused
(name,rows,reserved,data,index_size,unused )
exec sp_MSforeachtable
@command1='exec sp_spaceused ''?'''
select * from @table_spaceused;
go
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2765155/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 查詢資料庫中所有表資料條數SQLServer資料庫
- SQL Server資料庫查詢優化的方法總結SQLServer資料庫優化
- SQLServer查詢所有資料庫大小SQLServer資料庫
- SQL Server 查詢資料庫中所有的表名及行數SQLServer資料庫
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- PostgreSQL資料庫修改sql表的方法彙總SQL資料庫
- SQL SERVER 資料庫查詢表和欄位資訊語句SQLServer資料庫
- 查詢 SQL SERVER 所有表記錄數SQLServer
- 關於SQL Server資料查詢基本方法的總結SQLServer
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- SQL Server 跨資料庫查詢SQLServer資料庫
- 達夢資料庫表空間等空間大小查詢方法總結資料庫
- 獲取sql server資料庫中所有庫、表、欄位名的方法SQLServer資料庫
- SQL Server資料庫————模糊查詢和聚合函式SQLServer資料庫函式
- 【資料庫】sql連表查詢資料庫SQL
- 50種方法最佳化SQL Server資料庫查詢SQLServer資料庫
- 關於MySQL 查詢表資料大小的總結MySql
- 查詢資料庫大小資料庫
- 查詢所有資料字典的SQLSQL
- 常用資料庫查詢統計彙總資料庫
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- SQL Server:基於WEB的資料庫查詢SQLServerWeb資料庫
- 查詢資料庫每個表佔用的大小資料庫
- Oracle查詢資料庫中所有表和分割槽表的記錄數Oracle資料庫
- SQL Server在所有表中查詢(在整個庫搜尋內容)SQLServer
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- sqlserver查詢資料的所有表名和行數SQLServer
- 查詢資料庫的資料量的大小資料庫
- SQL Server資料庫查詢速度慢原因及優化方法SQLServer資料庫優化
- Oracle中用sql查詢獲取資料庫的所有觸發器,所有儲存過程,所有檢視,所有表...OracleSQL資料庫觸發器儲存過程
- MySQL 庫大小、表大小、索引大小查詢命令MySql索引
- Sqlserver查詢出所有表的大小使用情況SQLServer
- SQL SERVER 查詢表的欄位名、資料型別和最大長度SQLServer資料型別
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- SQL Server 2005 檢視資料庫表的大小 按照表大小排列SQLServer資料庫
- SQL server跨庫查詢SQLServer
- Java資料庫分表與多執行緒查詢結果彙總Java資料庫執行緒