Sqlserver 数据库文件大小和剩余空间

本文提供了一系列SQL Server中磁盘空间管理的实用查询语句,包括查询磁盘分区剩余空间、数据库文件信息、数据库磁盘使用情况及日志文件大小与利用率等,并附带了数据库日志文件收缩的方法。

在MS Sql Server中可通过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率:

1、查询各个磁盘分区的剩余空间:
Exec master.dbo.xp_fixeddrives;

2、查询数据库中的所有数据库名:
SELECT Name FROM Master..SysDatabases ORDER BY Name;

3、查询某个数据库中所有的表名:
SELECT name FROM SysObjects Where XType=’U’ ORDER BY Name;

4、查询数据库的数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)
select * from [数据库名].[dbo].[sysfiles];
转换文件大小单位为MB:
select name, convert(float,size) * (8192.0/1024.0)/1024. from [数据库名].dbo.sysfiles;

5、查询当前数据库的磁盘使用情况:
Exec sp_spaceused;
exec sp_spaceused ‘表名’; –取得表占用空間

6、查询数据库服务器各数据库日志文件的大小及利用率
DBCC SQLPERF(LOGSPACE);

7、收缩数据库日志文件(sql server2005)
backup log [数据库名] with no_log
DBCC SHRINKDATABASE(N’[数据库名]’, 15, TRUNCATEONLY)

8、收缩数据库日志文件(sql server2008)
USE[master]
GO
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE –简单模式
GO
USE [数据库名]
GO
DBCC SHRINKFILE (N’[数据库名]_Log’ , 11, TRUNCATEONLY)
GO
USE[master]
GO
ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [数据库名] SET RECOVERY FULL –还原为完全模式
GO

9、获取分析数据库中各表大小的代码示例

IrisAppDBConn dbConn = new IrisAppDBConn();
ResultSet rs = null;
try {
    List<String> list = new ArrayList<String>();
    String sql = "SELECT name FROM SysObjects Where XType='U' ORDER BY Name";
    rs = dbConn.getResultBySql(sql);
    while (rs.next()) {
        list.add(rs.getString("name"));
    }
    for (int i = 0; i < list.size(); i++) {
        sql = "exec sp_spaceused '" + list.get(i) + "'";
        rs = dbConn.getResultBySql(sql);
        if (rs.next()) {
            // name,rows,reserved,data,index_size,unused
            System.out.println(rs.getString("name") + "\t" + rs.getString("rows") + "\t" + rs.getString("reserved") + "\t" + rs.getString("data") + "\t" + rs.getString("index_size") + "\t" + rs.getString("unused") + "\t");
        }
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    dbConn.close();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值