在 sql server 数据库中,查询数据库的占用的空间大小和数据库中各表的占用大小

news2024/9/21 14:48:38

1、如果只是查询数据库的大小的话,直接使用以下语句即可:

EXEC sp_spaceused

2、为了保证查询结果的实时性,推荐使用下面这个语句来确保统计数据是最新的:

EXEC sp_spaceused @updateusage = N'TRUE';

执行完毕后结果是两个表,第一个表中包含了基本的统计信息,第二个表示更加详细的数据占用情况。

3、查询各表的占用大小

SELECT db_name() as DbName,
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS 总共占用空间MB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 0
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    总共占用空间MB desc;

在这里插入图片描述

4、查询各表的大小–使用存储过程

-- =============================================
-- 描  述:更新查询数据库中各表的大小,结果存储到数据表中
-- =============================================
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
SELECT * FROM temp_tableSpaceInfo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2106328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android终端如何快速接入GB28181平台实现实时音视频回传

技术背景 GB28181是由中国国家标准委员会发布的基于IP网络的安防视频监控标准。Android平台GB28181设备对接模块,主要涉及到视频监控领域,可实现不具备国标音视频能力的 Android终端,通过平台注册接入到现有的GB/T28181—2016服务&#xff0…

Ubuntu 下载/安装

官网 Enterprise Open Source and Linux | UbuntuUbuntu is the modern, open source operating system on Linux for the enterprise server, desktop, cloud, and IoT.https://ubuntu.com/ 下载 安装

代码签名证书有什么作用?

代码签名证书在软件开发和分发过程中具有多重重要作用,主要包括以下几个方面: 验证身份和来源:代码签名证书通过数字签名技术,验证软件发布者的身份,确保软件确实来自其声称的开发者或组织。这有助于用户识别并信任软件…

小试牛刀,开发你的第一个Java程序 -- HelloWorld

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

C语言09--进程的内存镜像

C进程内存布局 任何一个程序,正常运行都需要内存资源,用来存放诸如变量、常量、函数代码等等。这些不同的内容,所存储的内存区域是不同的,且不同的区域有不同的特性。因此我们需要研究C语言的内存布局,逐个了解不同内存…

SQLynx如何提高企业数据库安全?

企业数据库的安全性直接关系到企业的运营稳定、客户隐私保护以及市场竞争力。SQLynx凭借技术优势和全面的防护策略,致力于为企业数据库安全提供了强有力的保障。 1. 多数据源支持 SQLynx企业版支持多种主流数据源,包括Oracle、PostgreSQL、MySQL、Mari…

无痕去除视频logo,视频去水印

视频素材带有logo,是我们在剪辑中经常会遇到的问题。那么,怎么快速去掉视频中的logo呢? 随着视频内容的不断丰富和多样化,很多人都开始学习视频剪辑技巧,其中一个重要的问题就是如何去掉视频中的logo。 我们一般在网上…

十一 面向对象技术(考点篇)试题

A ;D,D。实际答案:C;D,D 考的很偏了。UML 2.0基础结构的设计目标是定义一个元语言的核心 UML 2.0 【InfrastructureLibrary】,通过对此核心的复用,除了可以定义一个自展的UML元模型,也可以 Infr…

OpenGauss 高性能高安全高可靠的企业级开源关系型数据库

openGauss | openGauss openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。 技术背景 openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。 自 2020 年 6 月开源以来,openGauss 一直围绕高性能、高可用、高智能、…

企业展厅设计关键转折点何在?如何确保展厅顺利实施?

随着科技的进步和市场竞争的加剧,各企业越来越注重自身的形象宣传和品牌推广。近期,数字多媒体技术在内容展览中所引起的广泛关注和讨论,让不少企业意识到,建设一个集创新、互动、科技于一体的企业多媒体展厅,是当下吸…

『功能项目』骑乘坐骑【22】

我们打开上一篇21项目优化的项目, 本章要做的事情是在召唤坐骑后的指定距离内点击骑乘即可乘坐坐骑 首先进入坐骑熊的预制体空间,将主角模型拖拽至坐骑身上并删除所有组件及标签 将子物体Player拖拽至其子级,父类删掉 将其Player隐藏 创建坐…

AI在台球助教系统中的应用与优化

随着科技的发展,AI技术在各个领域的应用越来越广泛。特别是在体育培训领域,AI的应用为传统教学方式带来了革命性的变化。对于热爱台球运动的朋友来说,台球助教系统无疑是一个令人兴奋的新工具。它利用先进的AI技术,为台球爱好者提…

vscode任务配置之tasks.json

目录 用途说明 用途1:配置编译任务 1.生成task.json文件 2.编辑task.json文件 3.运行任务 用途2:给一个脚本文件配置任务 1.生成task.json文件 2.编辑task.json文件 3.运行任务 用途说明 在VS Code中配置任务主要涉及到task.json文件的编辑&am…

训练 GAN 之技巧

GAN 是以很难训练而闻名的,我们接下来介绍一些其中的原因和训练GAN的小技巧。 首先,我们回顾一下判别器和生成器都在做些什么。判别器的目标是要分辨真的图片与产生 出来的假图片间的差异,而生成器在做的事情是要去产生假的图片,骗…

RK3588平台开发系列讲解(显示篇)图像的宽高和跨距

文章目录 一、图像宽、高二、图像跨距沉淀、分享、成长,让自己和他人都能有所收获!😄 “图像的基本组成单元为像素,对视频图像的存储,实际上是对像素的存储”。基于图像位深,我们可以确定存储一个像素所需的字节数,下面,可以开始“指导”计算机如何定量读取图像数据了…

图文解析保姆级教程:Postman专业接口测试工具的安装和基本使用

文章目录 1. 引入2. 介绍3. 安装4. 使用 此教程摘选自我的笔记:黑马JavaWeb开发笔记16——请求(postman、简单参数、实体参数、数组集合参数、日期参数、Json参数、路径参数)想要详细了解更多有关请求各种参数介绍的知识可以移步此篇笔记。 1…

存储卡恢复:如何从存储卡恢复已删除的照片/视频?

如何使用免费软件从存储卡恢复已删除的照片/视频? 在我们的指南中,从 Android 手机的微型 SD 卡恢复已删除的文件是免费的。以下是恢复所需的信息。 一台装有 Windows 操作系统的计算机;一个存储卡适配器(必需,因为如…

配置IPv6 over IPv4的手动隧道和自动隧道

正文共:888 字 9 图,预估阅读时间:1 分钟 随着IPv6的不断普及,现在家庭宽带基本上都能获取到IPv6地址了,介于此种场景,我们介绍了比较常见的GRE over IPv6的业务配置(配置GRE over IPv6隧道&…

基于SSM+MySQL的民宿推荐系统

系统背景 随着经济发展,各类电子产品普及千家万户。网民数量不断增加,网络显然已经成为了人际交流的重要形式。回顾近一个世纪的科技发展史,各类新的信息发布手段均随着时代洪流更新。旧时代是广播,报纸,电视&#xff…

读软件设计的要素01概念

1. 概念 1.1. 一个软件,从运行于手机上的最小程序到大型的企业系统,都是由概念组成的,每个概念都是独立的功能单元 1.2. 软件中的可用性问题,经常可以追溯到其底层概念 1.2.1. 概念帮助识别软件的不可用性 1.3. 概念都是以同样…