(2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...

一、建立作业备份数据库

  打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动)。启动后点击“作业-新建作业”,弹出一个作业属性的窗口,在“常规”栏目里可以先给作业命名,假设为“备份数据”。 一、备份数据的第一个步骤--“备份当日数据” 
  在“步骤”栏目里新建一个步骤名为“备份当日数据”,类型为“T-SQL”,数据库选择你要操作的数据库(假设为“TESTDB”),命令窗口里填入备份的SQL语句。假设备份数据放在“D:\BACKUP”里,备份文件命名格式为“SQL-2009-3-26.BAK”,那么语句如下:

DECLARE @filename VARCHAR(255)
DECLARE @date DATETIME
SELECT @date=GETDATE()
SELECT @filename = 'D:\BACKUP\SQL-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DATEPART(mm,@date) as varchar)+'-'+CAST(DATEPART(dd,@date) as varchar)+'.bak'
BACKUP DATABASE [TESTDB] TO  DISK = @filename WITH INIT
GO

在步骤属性的高级的“成功时要执行的操作”选择“转到下一步”即可,这样“备份当日数据”的步骤已经建立好。
二、备份数据的第二个步骤--“删除旧有备份”
  我们可以设置只保留5天内的备份数据,那么必须删除5天前的数据备份文件。在“备份数据”作业属性窗口的步骤栏目里,建立第二个步骤命名为“删除旧有备份”。同样类型为“T-SQL”,命令窗口里填入一下SQL语句:

DECLARE @OLDDATE DATETIME
SELECT @OLDDATE=GETDATE()-5
EXECUTE master.dbo.xp_delete_file 0,N'D:\BACKUP',N'bak',@olddate,1

此命令会删除“D:\BACKUP”里5天前的.BAK或.TRN格式的文件,不用指定文件名是什么。因为SQL SERVER的备份文件里包含了时间属性在里面。在步骤属性的高级的“成功时要执行的操作”选择“退出报告成功的作业”即可,这样第二个步骤已经建立好。

三、备份数据作业属性的计划栏目里,设置作业的执行时间
新建一个作业计划,命名为“每日自动备份和删除”,再选择执行的周期,例如每天凌晨1点开始执行。
最后保存整个“备份数据”的作业,每日就会自动备份数据库和删除旧有数据了。

 

四、清理历史记录

1. 删除旧的历史记录
  每次执行备份或还原操作后会向备份和还原历史记录表添加额外的行。因此,如果实例中的数据库备份非常频繁,建议定期执行 sp_delete_backuphistory,通过删除早于指定日期的备份集条目,减小备份和还原历史记录表的大小。

USE msdb;
GO
EXEC sp_delete_backuphistory @oldest_date = '2013-06-30';

2. 删除特定数据库的所有历史记录

sp_delete_database_backuphistory 将从备份和还原历史记录表中删除有关指定数据库的所有历史记录。
USE msdb;
GO
EXEC sp_delete_database_backuphistory @database_name = 'db01';

 五、查看事务日志文件是否做过备份

如果发现数据库db01的事务日志文件(LDF文件)变得非常大,那么首先运行以下语句,检查db01数据库是否做过事务日志备份。
select * from msdb.dbo.backupset where database_name='db01' and type='L'

 

数据库备份还原历史记录

备份还原的记录都在msdb里。

1. 备份记录

复制代码
SELECT bs.backup_set_id,bs.database_name,bs.backup_start_date,bs.backup_finish_date,CAST(CAST(bs.backup_size/1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS [Size],CAST(DATEDIFF(second, bs.backup_start_date,bs.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' [TimeTaken],CASE bs.[type]WHEN 'D' THEN 'Full Backup'WHEN 'I' THEN 'Differential Backup'WHEN 'L' THEN 'TLog Backup'WHEN 'F' THEN 'File or filegroup'WHEN 'G' THEN 'Differential file'WHEN 'P' THEN 'Partial'WHEN 'Q' THEN 'Differential Partial'END AS BackupType,bmf.physical_device_name,CAST(bs.first_lsn AS VARCHAR(50)) AS first_lsn,CAST(bs.last_lsn AS VARCHAR(50)) AS last_lsn,bs.server_name,bs.recovery_modelFROM msdb.dbo.backupset bsINNER JOIN msdb.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_idORDER BY bs.server_name,bs.database_name,bs.backup_start_date;
GO
复制代码

如果server_name是本机,那么备份是在本机生成的;

如果server_name是别的主机名,那么备份是被拿到本机做过数据库还原;

 

2. 还原纪录

复制代码
SELECT rs.[restore_history_id],rs.[restore_date],rs.[destination_database_name],bmf.physical_device_name,rs.[user_name],rs.[backup_set_id],CASE rs.[restore_type]WHEN 'D' THEN 'Database'WHEN 'I' THEN 'Differential'WHEN 'L' THEN 'Log'WHEN 'F' THEN 'File'WHEN 'G' THEN 'Filegroup'WHEN 'V' THEN 'Verifyonly'END AS RestoreType,rs.[replace],rs.[recovery],rs.[restart],rs.[stop_at],rs.[device_count],rs.[stop_at_mark_name],rs.[stop_before]
FROM [msdb].[dbo].[restorehistory] rs
INNER JOIN [msdb].[dbo].[backupset] bs
--on rs.backup_set_id = bs.media_set_id
ON rs.backup_set_id = bs.backup_set_id
INNER JOIN msdb.dbo.backupmediafamily bmf 
ON bs.media_set_id = bmf.media_set_id
GO
复制代码

还原数据库的时候是会写backupset和backupmediafamily系统表的,用来记录还原所用到的备份文件信息。

转载于:https://www.cnblogs.com/gered/p/9203950.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript+HTML+CSS面试题

今天参加面试,考了我三个小时,考晕了,赶紧补习补习javascript的知识!(另:人事部明明说招HTML5CSS3jQuery,考1个半小时左右,怎么变成了考传统DIVCSSjavascript啦,呜呜呜~~…

android 对话框

android 8种对话框(Dialog)使用方法汇总 作者:gzdaijie本文为作者原创,转载请注明出处:https://www.cnblogs.com/gzdaijie/p/5222191.html 目录 1.写在前面2.代码示例2.1 普通Dialog(图1与图2)2…

算法 --- 插入排序的JS实现

let A [5, 2, 4, 6, 1 ,3];// 插入排序 insertionSort (A) > {console.log("原数组>>>", A);for (let j1; j<A.length; j) {let key A[j];i j -1;while ( i > -1 && A[i] > key) {A[i1] A[i];i i-1;}A[i 1] key;}console.log(&q…

算法 --- 归并排序的js实现

let mergeSort (A, p, q, r) > {console.log("原数组>>>", A);let n1 q - p 1;let n2 r - q;let L new Array();let R new Array();for (let i 1; i < n1 1; i) {L[i -1] A[p i - 1];}for (let j 1; j < n2 1; j) {R[j-1] A[q j];}L[…

个人技术博客

一. Volley框架 在进行和服务器交互的时候需要发送请求&#xff0c;发现了volley这个好用易上手的框架。volley是一个异步网络通信框架&#xff0c;它的优点在于轻量级、适用于量小但传送频繁的请求操作 搭建请求的第一步就是新建一个请求队列RequestQueue queue Volley.newRe…

软件构造 第一章第二节 软件开发的质量属性

​软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality factors affect the software itself and its developers 内部质量因素影响软件本身和它的开发者 External quality results fr…

css自媒体查询

准备工作1&#xff1a;设置Meta标签 首先我们在使用Media的时候需要先设置下面这段代码&#xff0c;来兼容移动设备的展示效果&#xff1a; <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno">…

css --- 应用媒介查询制作响应式导航栏

以上导航会自动适应各个尺寸的屏幕 代码如下: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <meta name"apple-mobile-w…

Drools 7.4.1.Final参考手册(六) 用户手册

用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能&#xff0c;我们要如何开始&#xff1f;你无须担心&#xff0c;这些复杂性是分层的&#xff0c;你可以用简单的用例来逐步入门。 无状态Session&#xff0c;无须使用推理&#xff0c;就形成了最简单的用…

css --- 弹性盒子

左右两侧按1:1自适应,中间固定宽度500px // CSS /* 首先定义 container &#xff0c;关注display */ /* webkit 是Chrome、Safari 的浏览器前缀 */ .container{margin: auto;display: -webkit-box;width: 80%&#xff1b;height: 200px; } /* 开始定义左、中、右 */ .left { …

更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求...

现状 EasyRTMPClient&#xff0c;熟悉的朋友就会联想到EasyRTSPClient项目&#xff08;https://github.com/EasyDSS/EasyRTSPClient&#xff09;&#xff0c;EasyRTSPClient从14年中期开始发展&#xff0c;已经迭代发展历时3年多时间&#xff0c;可以说在RTSPClient领域是非常成…

bootstrap --- 表格

几个可选类: .table-bordered: 为表格加上边框 .table-striped: 为表格加上斑马效果 .table-hover: 鼠标悬停在表格行上时展现不同得颜色 .table-condensed: 更为紧凑的表格样式 // 导入样式,从bootstrap官网导入CDN // HEAD <link rel"stylesheet" href"…

mongodb数据库中插入数据

mongodb数据库中插入数据 一&#xff1a;connection 访问集合&#xff1b; 在mongodb数据库中&#xff0c;数据是存储在许多数据集合中&#xff0c;可以使用数据库对象的collection方法访问一个集合。该方法使用如下&#xff1a; db.collection(collectionName, [options], [ca…

bootstrap --- 表单

// HTML >>> 第一种样式 <!DOCTYPE html> <html> <head><link rel"stylesheet" href"https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity"sha384-Gn5384xqQ1aoWXA058RXPxPg6fy4IWvTNh0E263XmF…

bootstrap --- 按钮

<head><!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css" integrity"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTs…

bootstrap --- 分页

// bootstrap中给无序列表的ul元素添加pagination类即可.<ul class"pagination"><li class"disabled"><a href"#">&laquo;</a></li><li class"active"><a href"#">1</a&g…

图的基本知识

1.简介 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间的边的集合组成&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;G表示一个图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合。 图是一种复杂的非线性结构&#xff0c;在图结构中&a…

bootstrap --- 面板

基本样式 <div class"panel panel-default"><div class"panel-heading">面板头...</div><div class"panel-body">面板身体...</div><div class"panel-footer">面板脚...</div> </div>…

bootstrap --- 弹出对话框

<button class"btn btn-primary btn-lg" data-toggle"modal" data-target"#myModal">点击触发模态对话框 </button><div class"modal fade" id"myModal" tabindex"-1" role"dialog" ari…

模意义下的FFT算法

//写在前面 单就FFT算法来说的话&#xff0c;下面只给出个人认为比较重要的推导&#xff0c;详细的介绍可参考  FFT算法学习笔记 令v[n]是长度为2N的实序列&#xff0c;V[k]表示该实序列的2N点DFT。定义两个长度为N的实序列g[n]和h[n]为 g[n]v[2n],  h[n]v[2n1],  0<n…