Sql Server, 查询数据库中表的大小
2015-11-12 14:43
369 查看
-- ============================================= -- 描 述:更新查询数据库中各表的大小,结果存储到数据表中 -- ============================================= 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
使用的时候,直接执行下面的SQL Command就可以了:
EXEC sp_UpdateTableSpaceInfoSELECT * FROM temp_tableSpaceInfo
相关文章推荐
- Oracle 自定义函数示例
- Automysqlbackup: WARNING: Turning off multicore support, since pigz isn’t there.
- MySQL的常用命令集锦
- 谈谈Tempdb对SQL Server性能优化有何影响
- MySQL 运行环境建议规范
- oracle启动不起来,共享内存报错
- Memcached的配置和使用
- mysql 规范
- SQL基础
- 数据库索引浅析
- oracle查询
- SQL Server 2016 TempDb里的显著提升
- mongodb3.2.0-rc2下载地址
- SqlServer中生成1~23之间的连续数字
- redis高危漏洞
- SQL语句之GroupBy
- MAC 安装Redis
- VS利用ADO连接数据库的操作
- iOS开发中使用FMDB来使程序连接SQLite数据库
- 模拟数据库连接池