当前位置: 首页 > news >正文

SQL 表信息 | 统计 | 脚本

介绍

统计多个 SQL Server 实例上多个数据库的表大小、最后修改时间和行数,可以使用以下的 SQL 查询来获取这些信息。
在这里插入图片描述

脚本

示例脚本:

DECLARE @Query NVARCHAR(MAX)

-- 创建一个临时表用于存储结果
CREATE TABLE #TableSizes
(
    DatabaseName NVARCHAR(255),
    SchemaName NVARCHAR(255),
    TableName NVARCHAR(255),
    RowCount BIGINT,
    TotalSpaceUsedMB DECIMAL(18,2),
    LastModifiedDateTime DATETIME
)

-- 构建动态SQL查询
SET @Query = ''

-- 获取数据库列表 当数据库联机时才执行
SELECT @Query = @Query + 
    'IF DATABASEPROPERTYEX(''' + name + ''', ''Status'') = ''ONLINE'' ' + 
    'BEGIN ' +
    'USE [' + name + ']; ' +
    'INSERT INTO #TableSizes ' +
    'SELECT ' + QUOTENAME(name, '''') + ' AS DatabaseName, ' +
            'SCHEMA_NAME(schema_id) AS SchemaName, ' +
            't.name AS TableName, ' +
            'SUM(p.rows) AS RowCount, ' +
            'CONVERT(DECIMAL(18,2), SUM(a.total_pages) * 8 / 1024.0) AS TotalSpaceUsedMB, ' +
            'MAX(last_user_update) AS LastModifiedDateTime ' +
    'FROM ' + QUOTENAME(name) + '.sys.tables t ' +
    'INNER JOIN ' + QUOTENAME(name) + '.sys.indexes i ON t.object_id = i.object_id ' +
    'INNER JOIN ' + QUOTENAME(name) + '.sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id ' +
    'INNER JOIN ' + QUOTENAME(name) + '.sys.allocation_units a ON p.partition_id = a.container_id ' +
    'WHERE t.is_ms_shipped = 0 ' +
    'GROUP BY t.name, SCHEMA_NAME(schema_id); ' +
    'END '
FROM sys.databases
WHERE database_id > 4  -- Exclude system databases

-- 执行查询
EXEC sp_executesql @Query

-- 查询结果
SELECT * FROM #TableSizes

-- 删除临时表
DROP TABLE #TableSizes

update 20240206
检查数据库状态或使用 DATABASEPROPERTYEX 函数来完成。
仅查询状态为 “ONLINE” 的数据库,并将结果存储在临时表中。其他数据库(如 “OFFLINE” 或 “SUSPECT”)将被排除在外。

Ending


~喜欢的话,请收藏 | 关注(✪ω✪)~
~万一有趣的事还在后头呢,Fight!!(o^-^)~''☆ミ☆ミ~……

相关文章:

  • 【笔记】Helm-5 Chart模板指南-8 命名模板
  • QT学习(五)C++函数重载
  • SpringCloud--Eureka注册中心服务搭建注册以及服务发现
  • 基于OpenCV灰度图像转GCode的斜向扫描实现
  • Unity UGUI实现点击事件穿透
  • C++面试宝典第27题:完全平方数之和
  • 基于 Java 的小说阅读器小程序,附源码
  • PVST详解
  • CSS 闪电按钮效果
  • 【python】绘制春节烟花
  • Vagrant 虚拟机工具基本操作指南
  • Nginx反向代理WebSocket
  • SpringMVC-组件解析
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • gtkmm 与 Cambalache 与 Gtk::Builder (新手向)_
  • elementPlus实现动态表格单元格合并span-method方法总结
  • DC-8靶机渗透详细流程
  • 【蓝桥杯冲冲冲】[NOIP2017 提高组] 宝藏
  • react中的diff算法
  • MySQL数据库基础与SELECT语句使用梳理
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 受天气等影响SC8041航班三次备降延误超12小时,山航致歉
  • 国新办发布《关于新冠疫情防控与病毒溯源的中方行动和立场》白皮书
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 屠呦呦当选美国科学院外籍院士