在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
来源:互联网 发布:嘉靖皇帝知乎 编辑:程序博客网 时间:2024/06/17 15:34
转载自: http://www.cnblogs.com/xwgli/p/4517208.html
手上有一个数据库, 里面有上千张表. 不知道哪长表是存了数据的, 要逐一排查很麻烦. 于是可以通过生成一张临时表, 通过临时表记录每张表的大小, 然后标记出哪些表是有数据的
如果只是查询数据库的大小的话,直接使用以下语句即可:
EXEC sp_spaceused
为了保证查询结果的实时性,推荐使用 @updateusage 参数来确保统计数据是最新的:
EXEC sp_spaceused @updateusage = N'TRUE';
-- =============================================-- 描 述:更新查询数据库中各表的大小,结果存储到数据表中-- =============================================CREATE PROCEDURE [dbo].[sp_UpdateTableSpaceInfo]ASBEGIN --查询是否存在结果存储表 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_cursorENDGO
用的时候呢,执行一下:
EXEC sp_UpdateTableSpaceInfoSELECT * FROM temp_tableSpaceInfo
EXEC XXX.sp_UpdateTableSpaceInfoSELECT * FROM XXX.temp_tableSpaceInfo
同理, 在上一行创建临时表的代码里面, 替换 sysobjects为XXX.sysobjects, 再创建临时表
XXX.sysobjects
阅读全文
0 0
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
- Sql Server, 查询数据库中表的大小
- sql server 查询数据库表的大小语句
- sql 查询数据库中每个表的大小
- 查看sql server数据库的空间大小...
- 批量查询 SQL Server 数据库大小
- 查询SQL数据库中各表大小的存储过程
- 查询数据库中每个表的大小
- 查询mysql数据库的大小
- 查询数据库的总大小
- 查询数据库的总大小
- Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
- Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
- 检测数据库大小的sql
- 查询sql数据库中表占用的空间大小
- 查询sql数据库中表占用的空间大小
- SQL查询数据库里表大小的命令
- 查询sql数据库中表占用的空间大小
- React Native仿美团下拉菜单
- Mybatis二级缓存原理
- python数据类型详解
- [bzoj3545+3551][ONTAK2010]Peaks&&加强版(离线+线段树合并)||(kruskal重构树&&dfs序+主席树)
- 数据库相关知识点小结
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
- 文章标题
- 欢迎使用CSDN-markdown编辑器
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
- redis数据库1-基础
- java异常体系
- 反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
- native与js交互(WKWebView )
- somCNS短信接口替换