查询数据库空间分配情况:

 use master
go
create procedure dbo.proc_getdbspaceused
as
begin
set nocount on
create table #dbsize(
database_id int
,database_name nvarchar(1024)
,size_kb bigint
,space_available_kb bigint
,reserved_kb bigint
,data_kb bigint
,index_kb bigint
,unused_kb bigint
) declare @database_id int
declare @name nvarchar(1024)
declare @sql nvarchar(max)
declare cur cursor for select database_id,name from master.sys.databases order by database_id
open cur
fetch next from cur into @database_id,@name
while @@fetch_status=0
begin
set @sql =N'
insert into #dbsize
select
database_id = '+CONVERT(nvarchar(10),@database_id)+',
database_name = '''+@name+''',
size_kb = ((dbsize + logsize) * 8192 / 1024),
space_available_kb = (case when dbsize >= reservedpages then ((dbsize-reservedpages)* 8192/ 1024) else 0 end),
reserved_kb = (reservedpages * 8192 / 1024),
data_kb = (pages * 8192.0 / 1024),
index_kb = ((usedpages - pages) * 8192 / 1024),
unused_kb = ((reservedpages - usedpages) * 8192 / 1024)
from(
select
dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end)) ,
logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))
from ['+@name+'].dbo.sysfiles
) t1,(
select
reservedpages = sum(a.total_pages),
usedpages = sum(a.used_pages),
pages = sum(
CASE
When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0
When a.type <> 1 Then a.used_pages
When p.index_id < 2 Then a.data_pages Else 0
END )
from ['+@name+'].sys.partitions p
inner join ['+@name+'].sys.allocation_units a on p.partition_id = a.container_id
left join ['+@name+'].sys.internal_tables it on p.object_id = it.object_id
)t2'
exec(@sql)
fetch next from cur into @database_id,@name
end
close cur
deallocate cur select * from #dbsize
end
go
 exec master.dbo.proc_getdbspaceused  

查询数据库备份信息:

 --  drop table #dbsize
-- drop table #logsize
create table #dbsize(
database_id int
,database_name nvarchar(1024)
,size_kb bigint
,space_available_kb bigint
,reserved_kb bigint
,data_kb bigint
,index_kb bigint
,unused_kb bigint
)
go
create table #logsize(
database_name nvarchar(1024)
,LogSize_MB decimal(24,8)
,LogSpaceUsed decimal(14,8)
,Status tinyint
)
go
insert into #dbsize exec master.dbo.proc_getdbspaceused
go
insert into #logsize exec('DBCC sqlperf(logspace)')
go
select t0.database_id,t0.database_name
,t0.size_kb/1024 as [数据库大小MB]
,t0.space_available_kb/1024 as [可用空间MB]
,LogSize_MB as [日志大小MB]
,LogSpaceUsed as [日志已使用%]
,t1.compatibility_level as [兼容级别]
,t1.collation_name as [校对规则]
,t1.recovery_model_desc as [恢复模式]
,(case t3.type/*btype*/ when 'D' then '完整' when 'I' then '差异' when 'L' then '日志' end)as [备份模式]
,最近备份时间,备份大小MB,备份耗时Min,备份目录
from #dbsize t0
inner join master.sys.databases t1 on t0.database_name=t1.name and t1.state_desc='ONLINE'
inner join #logsize t2 on t0.database_name=t2.database_name
--LEFT JOIN (select btype from (values('D'),('I'),('L')) as btype(btype)) t4 on 1=1
left join (
select a.database_name,a.type
,CONVERT(varchar(30),a.backup_start_date,120) AS 最近备份时间
,convert(decimal(18,2),compressed_backup_size/1024/1024.) as 备份大小MB
,DATEDIFF(MINUTE,backup_start_date,backup_finish_date) as 备份耗时Min
,REVERSE(stuff(REVERSE(physical_device_name),1,CHARINDEX('\',REVERSE(physical_device_name))-1,'')) as 备份目录
from msdb.dbo.backupset a
inner join (
select database_name,type,MAX(backup_start_date) as latest_backup_date
from msdb.dbo.backupset
group by database_name,type
)b on a.database_name=b.database_name and a.type=b.type and a.backup_start_date=b.latest_backup_date
left join msdb.dbo.backupmediafamily c on a.media_set_id=c.media_set_id
)t3 on t0.database_name=t3.database_name --and t2.btype=t3.type
go

SQL Server查询数据库空间分配情况、数据库备份信息的更多相关文章

  1. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  2. SQL server学习(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数据库脱机.联机操作 数据库收缩操作 ...

  3. 关于SQL Server 2005 的自动远程数据库备份

    原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需 ...

  4. 使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)

    使用SQL Server 2008的事务日志传送功能备份数据库(logshiping) 使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)

  5. SQL server学习(一)数据库的基本知识、基本操作和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  6. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  7. SQL SERVER统计服务器所有的数据库(数据库文件)、表(表行数)、字段(各字段)等详细信息

    原文:SQL SERVER统计服务器所有的数据库(数据库文件).表(表行数).字段(各字段)等详细信息 USE STAT GO SET NOCOUNT ON IF EXISTS(SELECT 1 FR ...

  8. sql server 备份与恢复系列八 系统数据库备份与恢复分析

    一.概述 在前面讲过"sql server 备份与恢复系列"都是集中在用户数据库上.sql server还维护着一组系统数据库,这些系统数据库对于服务器实例的运行至关重要.在每次进 ...

  9. SQL Server 2008 错误15023:当前数据库中已存在用户或角色

    解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023,在使用SQL Server 2008时,我们经常会遇到一个情况:需要把一台 ...

随机推荐

  1. 常用相关linux命令

    查看进程netstat -tnlp | egrep "(9097)" lsof -i:9097 ps -ef | grep kafka 观察句柄变化lsof -p $pid | w ...

  2. eclipse搭建android开发环境

    1.首先安装JDK 此步骤是做JAVA必经之路,不多累述,强调要注意的地方: 目前为止android的开发环境只支持JDK1.7,千万不要下载JDK1.8. 下载的JDK一定要选择好操作系统,特别是要 ...

  3. getElementsByClassName 方法兼容性封装方法二

    var getElmsByClsName = function(className, results) { results = results || []; // 判断浏览器是否支持 getEleme ...

  4. 【摘录】JAVA内存管理-评估垃圾收集性能的工具

    第七章 评估垃圾收集性能的工具 各种各样的诊断和监视工具可以用来评估垃圾收集性能.本章简要概述他们中的几个.可以通过第九章中的“Tools and Troubleshooting”链接获得更多的信息. ...

  5. codeforces 567 E. President and Roads 【 最短路 桥 】

    给出一个有向图,从起点走到终点(必须走最短路),问一条边是否一定会被经过,如果不经过它,可以减小它的多少边权使得经过它(边权不能减少到0) 正反向建图,分别求出起点到每个点的最短距离,终点到每个点的最 ...

  6. Dynamic dispatch mechanisms

    Normally, in a typed language, the dispatch mechanism will be performed based on the type of the arg ...

  7. 由一道面试题简单扩展 — setTimeout、闭包

    在一个前端公众号,看到这么一个号称简单的面试题: 1.以下程序输出什么? <script type="text/javascript"> function init() ...

  8. Pyhton学习——Day38

    #CSS:Cascading Style Sheets——层叠样式表# CSS的四种引入方式# 行内式是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用.###### ...

  9. Pyhton学习——Day31

    # 服务端和接收端的send和reve没有任何关系,只与协议之间有关系# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送# 发送端什么时候会清空自己的内存?# 收到接收端的ACK响应以后才 ...

  10. Python的流程控制

    条件判断 通过`if`,`elif`,`else`关键字来实现条件判断逻辑的实现,执行改结构中的其中一个,其结构如下: if condition1: pass elif condition2: pas ...