You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL实例中含_BKP表的数据库及表信息查询SQL代码

检索SQL实例中带_BKP后缀的备份表及相关信息的SQL脚本

以下SQL脚本可遍历你的SQL实例中所有在线数据库,找出所有以_BKP结尾的备份表,同时返回这些表的记录数、所属数据库的总大小(含数据和日志文件),帮你定位冗余备份表以释放磁盘空间:

SET NOCOUNT ON;

-- 临时表存储结果
CREATE TABLE #BackupTables (
    DatabaseName NVARCHAR(128),
    TableName NVARCHAR(128),
    RecordCount BIGINT,
    DatabaseSizeMB DECIMAL(18,2)
);

-- 动态SQL遍历所有在线数据库
DECLARE @DBName NVARCHAR(128);
DECLARE @SQL NVARCHAR(MAX);

DECLARE db_cursor CURSOR FOR
SELECT name 
FROM sys.databases 
WHERE state_desc = 'ONLINE';

OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @DBName;

WHILE @@FETCH_STATUS = 0
BEGIN
    -- 生成查询当前数据库中_BKP表及记录数的SQL
    SET @SQL = N'
    USE [' + @DBName + N'];
    INSERT INTO #BackupTables (DatabaseName, TableName, RecordCount)
    SELECT 
        ''' + @DBName + N''' AS DatabaseName,
        t.name AS TableName,
        SUM(p.rows) AS RecordCount
    FROM sys.tables t
    JOIN sys.indexes i ON t.object_id = i.object_id
    JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
    WHERE t.name LIKE ''%[_]BKP''
        AND i.index_id IN (0, 1) -- 仅统计堆表或聚集索引,避免重复计数
    GROUP BY t.name;
    ';

    EXEC sp_executesql @SQL;

    FETCH NEXT FROM db_cursor INTO @DBName;
END;

CLOSE db_cursor;
DEALLOCATE db_cursor;

-- 更新数据库大小信息
UPDATE #BackupTables
SET DatabaseSizeMB = ds.SizeMB
FROM #BackupTables bt
JOIN (
    SELECT 
        d.name AS DatabaseName,
        CAST(SUM(mf.size) * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB
    FROM sys.databases d
    JOIN sys.master_files mf ON d.database_id = mf.database_id
    GROUP BY d.name
) ds ON bt.DatabaseName = ds.DatabaseName;

-- 输出最终结果
SELECT 
    DatabaseName,
    TableName,
    RecordCount,
    DatabaseSizeMB
FROM #BackupTables
ORDER BY DatabaseName, TableName;

-- 清理临时表
DROP TABLE #BackupTables;

关键说明

  • 记录数计算:脚本通过系统视图获取近似记录数,执行效率较高;如果需要精确统计,可将SUM(p.rows)替换为(SELECT COUNT(*) FROM [' + @DBName + N'].[' + SCHEMA_NAME(t.schema_id) + N'].[' + t.name + N']),但会显著增加执行时间(尤其是大表场景)。
  • 权限要求:执行脚本需要VIEW SERVER STATE权限,以及对所有目标数据库的SELECT权限。
  • 筛选逻辑:仅处理状态为ONLINE的数据库,避免访问离线或恢复中的库。

内容的提问来源于stack exchange,提问作者Pavan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:40:13