暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server查询数据库文件分配大小和数据库真实大小的脚本分享

DB宝 2023-02-27
792

查询真实大小(非数据文件分配大小)

 1-- 当前数据库真实大小
2SELECT CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2AS NUMERIC(362)) AS TotalSpaceMB,
3      CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2AS NUMERIC(362)) AS UsedSpaceMB,
4      CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.002AS NUMERIC(362)) AS UnusedSpaceMB
5FROM sys.tables t
6INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
7INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
8INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
9LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
10;
11
12
13
14/***********************************************************/  
15/***************************** 数据库真实大小  **********************/  
16/***********************************************************/
17DECLARE @database_name VARCHAR(50)
18DECLARE @SQL_STR VARCHAR(2000)
19
20IF OBJECT_ID('tempdb..#TB_DB_SIZES'IS NOT NULL
21DROP TABLE #TB_DB_SIZES
22CREATE TABLE #TB_DB_SIZES(db_name nvarchar(200),totalspacemb numeric(36, 2),usedspacemb numeric(36, 2),unusedspacemb numeric(36, 2))
23
24DECLARE DATEBASE_INFO_CURSOR CURSOR FOR
25SELECT name FROM  sys.databases
26where state=0
27-- where name not in ('master','model','msdb','tempdb')
28-- and state=0
29ORDER BY Name
30
31
32OPEN DATEBASE_INFO_CURSOR
33FETCH NEXT FROM DATEBASE_INFO_CURSOR INTO @database_name
34WHILE @@FETCH_STATUS=0
35BEGIN
36
37    SET @SQL_STR='INSERT INTO #TB_DB_SIZES
38SELECT '''
+@database_name+''',
39      CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS totalspacemb,
40      CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS usedspacemb,
41      CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS unusedspacemb
42FROM ['
+@database_name+'].sys.tables t
43INNER JOIN ['
+@database_name+'].sys.indexes i ON t.OBJECT_ID = i.object_id
44INNER JOIN ['
+@database_name+'].sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
45INNER JOIN ['
+@database_name+'].sys.allocation_units a ON p.partition_id = a.container_id
46LEFT OUTER JOIN ['
+@database_name+'].sys.schemas s ON t.schema_id = s.schema_id
47'

48
49  --  print (@SQL_STR)
50    EXEC (@SQL_STR)
51    FETCH NEXT FROM DATEBASE_INFO_CURSOR INTO @database_name
52
53END
54CLOSE DATEBASE_INFO_CURSOR
55DEALLOCATE DATEBASE_INFO_CURSOR
56
57
58select    * from  #TB_DB_SIZES  order by totalspacemb desc ;

SQL Server查询数据库文件分配大小

以下脚本可以用于SQL Server 2005版本:

 1-- exec sp_helpdb; -- 数据库大小包含日志,sql2000可用
2-- dbcc sqlperf(logspace); -- 查询日志大小
3
4SELECT  cast(A.database_id as varchar(10)) AS database_id,
5       a.name AS name,
6       convert(varchar(20),a.create_date,120AS create_date,
7       a.recovery_model_desc AS recovery_model_desc,
8       ISNULL(a.collation_name,' 'AS collation_name,
9       a.user_access_desc AS user_access_desc,
10       a.state_desc AS state_desc,
11       a.is_auto_create_stats_on AS is_auto_create_stats_on,
12       a.is_auto_update_stats_on AS is_auto_update_stats_on,
13       a.is_auto_close_on AS is_auto_close_on,
14       a.is_auto_shrink_on AS is_auto_shrink_on,
15       a.is_auto_update_stats_async_on AS is_auto_update_stats_async_on,
16       a.compatibility_level AS compatibility_level,
17       a.log_reuse_wait_desc AS log_reuse_wait_desc,
18       a.page_verify_option_desc AS page_verify_option_desc,
19       a.is_cdc_enabled as is_cdc_enabled,
20       (SELECT 'is_replication' =                      
21               CASE                      
22               WHEN b.category = 1 THEN 'Published'                      
23               WHEN b.category = 2 THEN 'subscribed'                      
24               WHEN b.category = 4 THEN 'Merge published'
25               WHEN b.category = 8 THEN 'merge subscribed'
26               Else 'NO replication'
27               ENDAS is_replication,                   
28        ISNULL(c.mirroring_state,' 'as mirroring_state ,
29       (select cast(round(sum(size), 2as numeric(152))
30          from (select database_id, typesize * 8.0 / 1024 size from sys.master_files) fs
31         where type = 0
32           and fs.database_id = a.database_id) AS '数据文件大小(MB)',
33       (select cast(round(sum(size), 2as numeric(152))
34          from (select database_id, typesize * 8.0 / 1024 size from sys.master_files) fs
35         where type = 1
36           and fs.database_id = a.database_id)  AS '日志大小(MB)',
37    (select cast(round(sum(size), 2as numeric(152))
38          from (select database_id, typesize * 8.0 / 1024 size from sys.master_files) fs
39         where fs.database_id = a.database_id)  AS '数据库大小(MB)' -- Exec sp_spaceused
40  from sys.databases as a
41  LEFT JOIN sys.sysdatabases b
42  ON a.database_id=b.dbid
43  LEFT JOIN   sys.database_mirroring c                      
44  ON    a.database_id=c.database_id 
45  where  a.name!='tempdb'
46  UNION ALL
47SELECT '总计','','','','','','','','','','','','','','','','','',
48(select  cast(round(sum(size * 8.0 / 1024), 2as numeric(152))  size from sys.master_files WHERE type=0) ,
49(select  cast(round(sum(size * 8.0 / 1024), 2as numeric(152))  size from sys.master_files WHERE type=1) ,
50(select  cast(round(sum(size * 8.0 / 1024), 2as numeric(152))  size from sys.master_files)
51;
52
53go
54
55
56
57C:\Users\Administrator>sqlcmd -S localhost -U SA
58密码:
59
6056> go
61database_id name                   create_date          recovery_model_desc     collation_name               state_desc   is_auto_create_stats_on is_auto_update_stats_on is_auto_close_on is_auto_shrink_on is_auto_update_stats_async_on compatibility_level log_reuse_wait_desc                                          page_verify_option_desc                                      is_cdc_enabled is_replication   mirroring_state 数据文件大小(MB)        日志大小(MB)          数据库大小(MB)
62----------- ---------------------- -------------------- ----------------------- ---------------------------- ------------ ----------------------- ----------------------- ---------------- ----------------- ----------------------------- ------------------- ------------------------------------------------------------ ------------------------------------------------------------ -------------- ---------------- --------------- ----------------- ----------------- -----------------
631           master                 2003-04-08 09:13:36  SIMPLE                  Chinese_PRC_CI_AS            ONLINE                             1                       1                0                 0                             0                 100 NOTHING                                                      CHECKSUM                                                                  0 NO replication                 0              4.00              1.25              5.25
643           model                  2003-04-08 09:13:36  FULL                    Chinese_PRC_CI_AS            ONLINE                             1                       1                0                 0                             0                 100 NOTHING                                                      CHECKSUM                                                                  0 NO replication                 0              2.25               .75              3.00
654           msdb                   2010-04-02 17:35:08  SIMPLE                  Chinese_PRC_CI_AS            ONLINE                             1                       1                0                 0                             0                 100 NOTHING                                                      CHECKSUM                                                                  0 NO replication                 0             14.75              3.06             17.81
665           ReportServer           2020-08-21 14:39:51  FULL                    Latin1_General_CI_AS_KS_WS   ONLINE                             1                       1                0                 0                             0                 100 NOTHING                                                      CHECKSUM                                                                  0 NO replication                 0              4.25              6.25             10.50
676           ReportServerTempDB     2020-08-21 14:39:53  SIMPLE                  Latin1_General_CI_AS_KS_WS   ONLINE                             1                       1                0                 0                             0                 100 CHECKPOINT                                                   CHECKSUM                                                                  0 NO replication                 0              2.25               .81              3.06
687           lhrdb                  2020-11-27 17:23:22  FULL                    Chinese_PRC_CI_AS            ONLINE                             1                       1                0                 0                             0                 100 LOG_BACKUP                                                   CHECKSUM                                                                  1 NO replication                 0            301.00           1585.44           1886.44
698           tpcc                   2020-12-17 18:17:20  FULL                    Chinese_PRC_CI_AS            ONLINE                             1                       1                0                 0                             0                 100 NOTHING                                                      CHECKSUM                                                                  0 NO replication                 0            646.00            235.56            881.56
70总计                                                                                                                                              0                       0                0                 0                             0                   0                                                                                                                                        0                                0            982.50           1833.63           2816.13
71
72(8 行受影响)

MSSQL 2000数据库文件大小

 1-- Exec sp_spaceused; -- 单个库的大小 ,MSSQL 2000可用
2-- exec sp_helpdb; -- 数据库大小包含日志,MSSQL 2000可用
3-- MSSQL 2000 查看所有数据库大小、恢复模式等信息
4SELECT Q1.DBID,DatabaseName AS DatabaseName,Q3.CRDATE,
5       DataSize DataSize_MB,
6       LogSize LogSize_MB,
7       DataSize + LogSize AS TotalSize_MB,
8       Collation,
9       RecoveryType,
10       AutoClose,
11       AutoShrink,
12       CMPTLEVEL,
13             FILENAME
14FROM   (SELECT DBID,
15               CASE SUM(size * 8 / 1024)  WHEN 0 THEN 1 ELSE  SUM(size * 8 / 1024END AS DataSize
16        FROM   master..sysaltfiles
17        WHERE  GroupID <> 0
18        GROUP  BY DBID) q1
19INNER  JOIN (SELECT DBID,
20                    CASE SUM(size * 8 / 1024WHEN 0 THEN 1 ELSE SUM(size * 8 / 1024END AS LogSize
21             FROM   master..sysaltfiles
22             WHERE  GroupID = 0
23             GROUP  BY DBID) q2
24ON     q1.DBID = q2.DBID
25INNER  JOIN (SELECT DBID,
26                    [NAMEAS DatabaseName,
27                    CONVERT(VARCHAR(100), DATABASEPROPERTYEX([NAME], 'Collation')) AS Collation,
28                    CONVERT(VARCHAR(100), DATABASEPROPERTYEX([NAME], 'Recovery')) AS RecoveryType,
29                    CASE CONVERT(VARCHAR(10), DATABASEPROPERTYEX([NAME], 'IsAutoClose'))   
30                       WHEN 0 THEN   '-'  
31                       WHEN 1 THEN  'Yes'
32                    END AS AutoClose,
33                    CASE
34                     CONVERT(VARCHAR(10),   DATABASEPROPERTYEX([NAME], 'IsAutoShrink'))
35                        WHEN 0 THEN  '-'
36                        WHEN 1 THEN 'Yes'
37                    END AS AutoShrink,
38                   NB.CRDATE,
39                   NB.CMPTLEVEL,
40                                     NB.FILENAME
41             FROM   master.dbo.sysdatabases NB ) q3
42ON     q1.DBID = q3.dbid
43ORDER  BY q1.DBID;

MSSQL 2000数据文件

1-- MSSQL 2000数据文件
2USE lhrdb; 
3SELECT NAMEsize FROM sysfiles;
4
5SELECT dbid, DB_NAME(dbid) dbname,fileid,groupid,size,maxsize,growth,status,filename
6FROM master..sysaltfiles AS mf WITH (NOLOCK) 
7;


文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论