怎么查看数据库历史记录的历史备份情况

查看数据库备份状态
我们常常在数据库属性的“常规”选项页中查看某个数据库最近一次全备份和日志备份的时间,如果能一眼就看到实例上所有数据库的备份时间,岂不是更好?
我脑袋里首先想到的是sys.databases这个系统视图,好像没有找到记录备份时间的字段,常用的DMV里也没有。最后,还是从msdb.dbo.backupset里找到了:
;with CTE_Last_Full_Backup(database_name,backup_start_date,rank)as(
select database_name,backup_start_date
,rank()over(partition
by database_name order by
backup_start_date desc)
from msdb.dbo.backupset
where type='D'
),CTE_Last_Log_Backup(database_name,backup_start_date,rank)as(
select database_name,backup_start_date
,rank()over(partition
by database_name order by
backup_start_date desc)
from msdb.dbo.backupset
where type='L'
)select d.name
as database_name,f.backup_start_date
as last_full_backup,l.backup_start_date
as last_log_backup
,recovery_model_desc
from sys.databases
left join CTE_Last_Full_Backup as f
on d.name=f.database_name
and f.rank=1
left join CTE_Last_Log_Backup as l
on d.name=l.database_name
and l.rank=1
order by d.name
语句中的type='D'表示全备份,而type='L'表示日志备份,至于差异备份,则是type='I'。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。IBM Knowledge Center查看:5866|回复:4
一、msdb 数据库
  msdb是一个系统数据库。SQL Server Agnet 使用 msdb 数据库来计划警报和作业,SSMS、Service Broker 和数据库邮件等其他功能也使用该数据库。
  默认情况下,msdb 使用简单恢复模式。请注意,当安装或升级 SQL Server 时,只要使用 Setup.exe 重新生成系统数据库,msdb 的恢复模式便会自动设置为简单。
如果使用备份和还原历史记录表,我们建您对 msdb 使用完整恢复模式。
二、查看历史记录
  SQL Server 在 msdb 中的表中自动保留一份完整的联机备份与还原历史记录。 这些信息包括执行备份一方的名称、备份时间和用来存储备份的设备或文件。
1. 备份和还原历史记录表
(1)backupfile
  每个备份的数据或日志文件在表中占一行。例如,备份了某个数据库,由backupfile表可以得知这个数据库由多少个数据文件和日志文件组成。
(2)backupfilegroup
  备份集中的每个文件组在表中占一行。
(3)backupmediafamily
  每个介质簇在表中占一行。 如果介质簇属于某个镜像介质,则对于介质集中的每个镜像,该介质簇都具有一个单独的行。
(4)backupmediaset
  每个备份介质集在表中占一行。
(5)backupset
  每个备份集在表中占一行。
(6)restorefile
  每个已还原文件在表中占一行。 这包括按文件组名称间接还原的文件。
(7)restorefilegroup
  每个已还原的文件组在表中占一行。
(8)restorehistory
  每个还原操作在表中占一行。
2. 查看备份的相关信息
(1)查看对应的数据库的文件结构
  T-SQL示例:RESTORE FILELISTONLY FROM DISK = N'C:\Backup\db01.bak' WITH FILE=1
  此命令查询了backupfile表,返回一个结果集,其中包含一个列出了指定备份集中包含的数据库的数据文件和日志文件的列表。显示的信息包括逻辑名称、物理名称、文件类型(数据库文件或日志文件)、文件组成员资格、文件大小(字节)、允许的文件最大大小和预定义的文件增长大小(字节)。
  这些信息有助于我们了解该备份集所对应的数据库的文件结构,以防止在恢复时出现不匹配的磁盘驱动器名称、驱动器映射、目录结构。例如,备份中包含一个必须还原到驱动器 E 的文件,而目录服务器上没有驱动器 E。
(2)查看备份介质的标头信息
  T-SQL示例:RESTORE LABELONLY&&FROM MyBackupDev
  此命令查询了backupmediaset表,返回一个结果集,其中包含有关指定的备份介质的标头信息。在此命令的语法中,备份介质可以是备份设备的名称(FROM 备份设备的名称),也可以直接引用文件类型的备份介质(FROM DISK=)或磁带类型的备份介质(FROM TAPE=)。
  此命令查看介质标头时仅显示有关介质本身的信息,而不显示有关介质上的备份集的信息。 显示的介质标头信息包括介质名称、说明、创建介质标头的软件的名称以及介质标头的写入日期。
(3)查看备份集的标头信息
  T-SQL示例:RESTORE HEADERONLY&&FROM DISK = N'C:\Backup\db01.bak'
  此命令查询了backupset表,返回一个结果集,其中包含有关指定备份介质中所有备份集的所有备份标头信息。RESTORE HEADERONLY&&的语法与RESTORE LABELONLY&&很相似。
  显示的信息包括使用的备份介质类型、备份类型(数据库备份、事务备份、文件备份还是差异数据库备份)以及备份开始和停止的日期/时间。
  这些信息通常用于:在还原时确定使用备份介质(磁盘或磁带)上的哪个备份集;查看介质上包含哪些备份。
注意:从 SQL Server 2008 开始,获取有关备份集或备份介质的信息需要具有 CREATE DATABASE 权限。
本帖最后由 jimshu 于
09:19 编辑
三、删除历史记录
1. 删除旧的历史记录
  每次执行备份或还原操作后会向备份和还原历史记录表添加额外的行。因此,如果实例中的数据库备份非常频繁,建议定期执行 sp_delete_backuphistory,通过删除早于指定日期的备份集条目,减小备份和还原历史记录表的大小。 USE
EXEC sp_delete_backuphistory @oldest_date = ''; 2. 删除特定数据库的所有历史记录
  sp_delete_database_backuphistory 将从备份和还原历史记录表中删除有关指定数据库的所有历史记录。 USE
EXEC sp_delete_database_backuphistory @database_name = 'db01'; 四、注意事项
1. 使用存储过程 sp_delete_backuphistory 和 sp_delete_database_backuphistory&&只是删除了msdb数据库中的某些记录。即使所有历史记录都已被删除,物理备份介质也会保留下来。
2. 在将一个数据库恢复到另一个实例时,msdb中的备份历史不会复制过去。
本帖最后由 jimshu 于
12:56 编辑
MCITP/MCSE/MCT/MVP&&SQL Server
那些年,我们一起追过的MS SQL Server
http://jimshu.blog.51cto.com
最有价值午饭
作为一个DBA,用几条语句查一上msdb的几张表,就可以知道哪个数据库该做备份了。
最近遇到几个客户问:为啥LDF文件变得这么大了?
我就让客户查询一下,并把结果发给我。然后一看,果然从来没有做过事务日志备份。
select * from msdb.dbo.backupset where database_name='db01'
论坛首席记者
引用:原帖由 云天英雄 于
20:22 发表
作为一个DBA,用几条语句查一上msdb的几张表,就可以知道哪个数据库该做备份了。
最近遇到几个客户问:为啥LDF文件变得这么大了?
我就让客户查询一下,并把结果发给我。然后一看,果然从来没有做过事务日志备份。
select * from ... 这个方便
51CTO论坛有移动端啦,发帖回帖更方便~
在error log或者定制备份的job中也可以查看:P1
SQL Server MCITP, MVP, MCT, DBAsql server 数据库备份历史记录
CONVERT(CHAR(100),SERVERPROPERTY('Servername'))AS Server,
bs.database_name,
bs.backup_start_date,
bs.backup_finish_date,
bs.expiration_date,
CASE bs.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
END AS backup_type,
bs.backup_size,
bmf.logical_device_name,
bmf.physical_device_name,
bs.name AS backupset_name,
bs.description,
'RESTORE DATABASE ['+bs.database_name+'] FROM DISK=N'''
+bmf.physical_device_name+ '''WITH NORECOVERY;'
FROM msdb.dbo.backupmediafamily bmf
INNER JOIN msdb.dbo.backupset bs
ON bmf.media_set_id=bs.media_set_id
bs.backup_start_date&DATEADD(DAY,-1,GETDATE())
ORDER BY bs.backup_finish_date
阅读(...) 评论()SQL Server数据库的备份怎么查看备份的数据,怎么输入SQL语法查看数据库里头的内容。
SQL SERVER数据库备份后的文件扩展名为.BAK,它可以恢复数据库,如果你要查看备份数据库中的数据,得先还原数据库,具体还原方法是:打开企业管理器,在数据库节点右键,选择“所有任务”---“还原数据库”,系统弹出“还原数据库”对话框,在“还原为数据库”下拉菜单中选择或录入一个新的数据库名称,选择“从设备(m)”圆按钮,在“参数”框中,单击“选择设备”按钮,此时,你选择你的备份数据库文件,单击确定,回到“还原数据库”界面,选择“选项”选项卡,确定你的逻辑文件名和物理文件名位置。确定系统即可还原数据库。如果你需要查看文件中的内容,当然,你这个说法可能有错误,数据库备份文件还原后,还是在SQL SERVER中以存在,那么,你要查看里面的数据,这得需要用查询语句来实现或用企业管理器查询各表中数据内容或函数、过程等。。 查询语句可参考:SELECT * FROM SYSTEM
我记的2008r2 不再支持 no_log 语句了吧
方法/步骤1.& & &&如何查看SQL Server数据库的版本信息和服务名称,在我们安装完软件之后总有一种想要去查看自己安装软件的型号和类型,就如同我们买下笔记本电脑之后想要急的去查看自己笔记本的型号和性能一样,今天我们要说的是如何查看SQL Server数据库的版本信息和服务名称。2.& & & 方法一:3.& & & 这个导航按钮如同一个下拉框的列表一样,这里出现如下如中的内容之后,我们这边选择最后一行关于(A)4.& & & 弹出如下图中所示的内容,这里我们可以查看到数据库的一些详细内容。5.& & & 方法二:6.& & &选择输入如下内容:7.& & & 输入完毕之后,注意选择全部内容,然后点击上面的执行按钮,进行执行8.& & & 执行完毕之后,我们在消息框中就可以看到你所希望看到的内容。
好像不能直接查看DAT文件内容吧,而且如果是SQL备份文件的话,也是BAK后缀的,文件里的数据组织格式不是数据库通常格式的。
这个不用敲代码的,在资源对象管理器器重2,找到数据库,点开,然后找到你备份的数据库,然后,找到你要找的表,然后右键,选择“编辑前200行,”就看到数据库里的知识了,就是这样了
直接查看不了,只有鼠标右键点击它选择查看一些基本属性
人的综合分
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?}

我要回帖

更多关于 查看数据库使用情况 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信