<>完整备份
提示:因为所有类型的备份都是基于完整备份的,如果没有至少一次的完整备份,其他的备份都是多余
 的,所以一定要在建完数据库后做一次完整备份。
 提示:在生产环境中,都强烈建议使用【完整恢复模式】,即使说相对于其他两中恢复模式,完整恢复
 模式产生的日志会很大,但是在出现问题的时候,这都不算什么了。
2022-10-10 凌晨 做了完整备份
 2022-10-14 15:00 误删除一个表。
 引入这个区别: 数据备份 是备份数据的, 日志备份: 是记录操作的,说白也是备份数据的,只是有类似时间轴的特点,可以恢复任何时间的数据【日志备份之前】
 如果操作 才能把数据损失降到最低
 <>操作方法
1.做日志备份,记住一定要选择【备份日志尾部】。
 压缩备份 不是必须的,
然后在【选项】中,严格按照红色框中的选择项进行勾选,否则,达不到效果设置不能恢复。并且保证数据库不要
 有连接,因为有链接,日志备份是备份不了的
 经过上面的备份日志尾部,则数据库会变成如下 【正在还原状态…】
 经过上面几步,日志备份 完成后 就可以进行数据还原了
 <>还原
注意 先要还原完整备份,注意一定要选择最后那一次的完整备份,否则是还原不了的
 注意 一定要 选择 restore with norecovery ,这样才能继续还原数据
最后一步就是还原日志备份了,选择恢复的时间点不必太在意,只要填写你误操作之前的时间点,就
 可以了
 注意 一定要选择 restore with recovery 就是数据库可以正常使用了,
 <>全备份【完整备份】
创建备份完成时数据库内存在的数据的副本
 <>差异备份
只记录自上次数据库备份【最近一次全备份】后发生更改的数据。差异数据库备份比数据库备份小,而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。
 还原步骤:①完整备份②还原最后一次差异备份
 <>日志备份
是自上次备份事物日志后对数据库执行的所有事物的一些列记录。可以使用事物日志备份将数据库恢复到特点的时间点(如输入多余数据前的那一刻)或恢复到故障点
 还原步骤:①还原完整备份②依次还原每个事物日志备份,而不是还原最后一次事物日志备份。
 <>文件组备份
可以备份和还原数据库中的个别文件。可以只还原已还原损坏的文件,而不用还原数据库的其余部分,从而加快恢复速度。
不同的备份类型适应的范围也不同。
 全备份,可以只用一步操作完成数据的全部备份,但执行时间比较长。
 差异备份和日志备份,都不能独立作为一个备份集来使用,需要进行一次全备份。
 文件备份必须与事物日志备份一起使用,所以文件备份只适应用于完全恢复模型和大容量日志记录恢复模型
每一种备份类型都有不足之处,要针对需要选择备份类型,或者使用几种备份方法的配合来完成数据库的备份
经常使用备份方式组合有以下几种
 * 全备份+差异备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行差异备份
 * 全备份+日志备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行日志备份
 * 文件组备份+日志备份:备份周期取决于数据库的大小和能力,每周期分别进行一部分数据文件备份,每天进行日志备份。 
 <>使用T-SQL脚本备份数据库事务日志
备份语法:backup log 数据库名 to disk=文件完整路径;
 <>使用T-SQL脚本还原数据库事务日志
 <>如果要还原的数据库不存在
还原语法:
 第一步还原数据库:restore database 数据库名 from disk=文件完整路径 with norecovery;
 第二步还原事务日志:restore log 数据库名 from disk=文件完整路径 with recovery;
 <>如果要还原的数据库存在
还原语法:
 第一步还原数据库:restore database 数据库名 from disk=文件完整路径 with norecovery,replace;
 第二步还原事务日志:restore log 数据库名 from disk=文件完整路径 with recovery
 <>优点:
1、日志备份会节约更多的时间,恢复起来也更快可以及时恢复,数据丢失少。
 2、在SQL Server中,事务日志备份是增量备份,它捕获的是自上一次事务日志备份以来的变化,而差异备份则包
 含了自上一次完整备份以来所有变化的页。
 3、日志备份可以恢复到相应的时间点。
 <>缺点:
恢复过程比较慢,需要恢复多个备份包括完整备份和日志备份。
 <>远程异地备份
方法1: 利用作业
 解释: 利用xp_cmdshell创建一个网络映射, 把备份好的数据库, 
远程存入到映射盘符中,data是112.118.0.2服务器的一个允许读写的共享文件夹,执行完成后,把映射删除掉,释放资源.
在使用cp_cmdshell创建网络映射时, 先要开启, 否则会有报错, 如下命令:
 EXEC sp_configure ‘show advanced options’, 1;-- 允许配置高级选项
 –配置选项’show advanced options’ 已从1 更改为1。请运行RECONFIGURE 语句进行安装。
 RECONFIGURE;-- 重新配置
 –命令已成功完成。
 EXEC sp_configure ‘xp_cmdshell’, 1;-- 开启xp_cmdshell
 –配置选项’xp_cmdshell’ 已从1 更改为1。请运行RECONFIGURE 语句进行安装。
 RECONFIGURE;-- 重新配置
 –命令已成功完成。
exec master…xp_cmdshell ‘net use \IP\data 密码 /user: IP\administrator’
 – net use \IP\data 允许网络读写的共享文件路径
 – 密码 : IP服务器的登录密码
 –/user:: IP\administrator IP的登录名
 declare @ss varchar(50) --声明变量
 set @ss = convert(varchar(100),GetDate(),112)
 -–赋值当前日期, 我这里没有使用
 set @ss =‘\IP\data\MSGC.bak’
 –最好是使用同名的备份, 否则还原的时候可能会有问题
 backup database MSGC to disk=@ss WITH FORMAT
 –WITH FORMAT可以做到覆盖任何现有备份和创建新媒体集
 exec master…xp_cmdshell’net use \IP\data /delete’
 –删除刚才创建的映射
方法2:利用维护计划
 T_SQL 数据库备份 数据库还原
--创建备份设备 exec sp_addumpdevice 'disk','Back1','d:\backup\backData.bak' ---创建完整备份
backup database 数据库名称 to Back1 with init ;--覆盖 --备份事务日志 backup log 数据库名称 to 
Back1----数据库还原指定时间点 ---首先要完整还原数据库 NORECOVERY RESTOre Database 数据库名称 from Back1 
with File=1,---备份集为1,这个在前面完整备份的时候从message中得到 Replace, NORECOVERY; 
----根据日志信息以及备份恢复日志至某一点 restore log 数据库名称 from Back1 with Recovery, file =2,
---备份集2 stopAt='指定时间点'; --是在执行上述操作以后,TESTDB2往往处于restoring状态,使用此语句使数据库可用 RESTORE 
DATABASE 数据库名称 WITH RECOVERY; ---stopAt:必须在备份备份log,的start time之后,