首页 > 数据库 >SQL SERVER 统计每张表的大小

SQL SERVER 统计每张表的大小

时间:2022-10-17 12:12:08浏览次数:50  
标签:-- tablename list 每张 cursor tableSpaceInfo SQL table SERVER

建存储过程

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- 说明:更新查询数据库中各表的大小,结果存储到数据表中
-- =============================================

CREATE PROCEDURE [dbo].[P_GetTableSpaceInfo]

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 P_GetTableSpaceInfo
SELECT * FROM temp_tableSpaceInfo;

标签:--,tablename,list,每张,cursor,tableSpaceInfo,SQL,table,SERVER
From: https://www.cnblogs.com/vipsoft/p/16798759.html

相关文章

  • 【服务器虚拟化数据恢复】Xen Server环境下虚拟机的虚拟磁盘被破坏的数据库数据恢复案
    服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务,存储网站文件......
  • jumpServer 资源点击《测试可连接性》报错
    发现问题最近在梳理jumpServer,然而发现资源有一部分的硬件资源是空白的,如图:然而,找到点击资源名称,点击更新硬件,报如下错误:解决问题最开始的思路是找到具体资源服务器,找到上......
  • SQL SERVER FOR xml PATH( )用法
    1、查询数据--查询邮件接收人和抄送人SELECTDISTINCTUSER_ID,CC_USER_IDFROMMAIL_LOADWHEREMAIL_TYPE='PM_MAIL';查询结果如图:  2、用FORxmlPATH()......
  • 通过链接服务器从 SQL Server 访问 MySQL 数据
    问题有时您需要从SQLServer中访问MySQL中的数据。您可以导出和导入数据,但另一种选择是创建一个从SQLServer到MySQL的链接服务器。在本技巧中,我们将介绍如何从SQ......
  • SAP HANA SQL系列一:常用数据类型
     数据类型日期时间类型DATETIMESECONDDATETIMESTAMP数字类型SMALLINTINTEGERBIGINTDECIMAL(精度,小数位数)或DEC(p,s)SMALLDECIMALREALDOUBLEFLOAT(n)字符类型VARCHARNVAR......
  • SAP HANA SQL系列三:日期时间函数
    日期时间函数ADD_DAYSADD_MONTHSADD_SECONDSADD_YEARSCURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPCURRECT_UTCDATECURRENT_UTCTIMECURRENT_UTCTIMESTAM......
  • 从 SQL Server 创建到 MySQL 的链接服务器
    问题SQLServer链接服务器用于查询远程数据库,在本技巧中,我们将学习如何从SQLServer为MySQL服务器配置链接服解决方案以下是创建连接到MySQL服务器的链接服务器......
  • MySQL数据库通过cmd窗口导入sql文件
     在使用mysql数据库是,经常需要备份或者恢复数据库数据,最便捷的方式就是通过导出sql文件备份和直接执行sql文件恢复;以下记录如何进行操作的:一、导出sql文件 1、启动My......
  • 【MySQL练习】基本SELECT语句
    表数据:https://www.cnblogs.com/zhishu/p/16452950.html1.查询员工12个月的工资总和,并起别名为ANNUALSALARY别名中有空格的,要用双引号。IFNULL(expr1,expr2),expr1如果......
  • MySQl中关于JOIN的用法全解
    一、一张图看懂MySQL的各种JOIN用法二、准备表和数据,测试1、创建两个表测试CREATETABLE`forlan_class`( `id`bigint(20)NOTNULLAUTO_INCREMENTCO......