sql server查询数据库的大小和各数据表的大小
查询出来的结果中各字段的详细说明参考MSDN资料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx
如果只是查询数据库的大小的话,直接使用以下语句即可:
EXEC sp_spaceused
为了保证查询结果的实时性,推荐使用 @updateusage 参数来确保统计数据是最新的:
EXEC sp_spaceused @updateusage = N'TRUE';
执行完毕后结果是两个表,第一个表中包含了基本的统计信息,第二个表示更加详细的数据占用情况。
如果想具体查询某个表的大小,加上表名即可:
如果想要一次性的把数据库中所有的表的大小全部查询出来的话,参考下面的方法:
-- ============================================= -- Description: 更新查询数据库中各表的大小,结果存储到数据表中 -- ============================================= 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 --最近一条FETCH语句的标志 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 SELECT * FROM temp_tableSpaceInfo
OK,搞定!
分类:
SQL Server
标签:
sql数据表大小 数据库大小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下