SQL Server 备份还原

SQL Server支持三种备份方式

  • 完全备份;
  • 差异备份
  • 事务日志备份

一般备份方式为,完全备份/每周,差异备份/每天,事务日志备份/按分钟计,这样可确保备份的高效性和可恢复性。

1. 完全备份

  • 备份脚本
BACKUP DATABASE PCT TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT.bak‘;
  • 还原备份
RESTORE DATABASE PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH RECOVERY;

2. 差异备份

  • 备份脚本
BACKUP DATABASE PCT TO DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_Differential.bak‘ WITH DIFFERENTIAL;
GO
  • 还原备份

在SQL Server中还原差异备份,需要先还原在差异备份时间点之前的一个完整备份,在还原完整备份时要加上NORECOVERY参数,SQL语句如下:

RESTORE DATABASE PCT
FROM  DISK = ‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH  FILE = 1,
NOUNLOAD,
STATS = 10,
NORECOVERY
GO

  还原差异备份时,如果只有一个差异备份文件需要还原,无需使用NORECOVERY参数,SQL语句如下:

RESTORE DATABASE PCT
FROM  DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_Differential.bak‘
WITH  FILE = 1,
NOUNLOAD,
STATS = 10
GO

  如果有多个差异备份文件需要还原,除了最后一个差异备份文件,其他都需要加上NORECOVERY参数

事务日志备份

  • 事务日志备份
BACKUP LOG PCT TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT_Log.bak‘;
  • 尾日志备份
BACKUP LOG PCT TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT_TailLog.bak‘ WITH NORECOVERY;
  • 完整恢复到失败点
USE master;
BACKUP DATABASE PCT
TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH INIT;
GO

-- Perform a transaction log backup of the Test database
BACKUP Log PCT
TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT_log.bak‘
WITH INIT;
GO

-- ....<FAILURE OCCURS HERE>....

-- Back up the tail of the log to prepare for restore
BACKUP Log PCT
TO DISK =‘D:\Company\Data\SQL Server\Backup\PCT_taillog.bak‘
WITH NORECOVERY, INIT;
GO

-- Restore the full backup
RESTORE DATABASE PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH NORECOVERY;

-- Apply the transaction log backup
RESTORE LOG PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_log.bak‘
WITH NORECOVERY;

-- Apply the tail log backup
RESTORE LOG PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_taillog.bak‘
WITH NORECOVERY;

-- Recover the database
RESTORE DATABASE PCT
WITH RECOVERY;
GO
  • 恢复到上次正确日志备份的时间点
-- FULL BACKUP at 2:00 AM
USE master ;
BACKUP DATABASE PCT
TO DISK = ‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH INIT ;
GO

-- LOG BACKUP 1 at 2:15 AM
USE master ;
BACKUP LOG PCT
TO DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_log.bak‘
WITH INIT ;
GO

-- LOG BACKUP 2 at 2:30 AM
USE master ;
BACKUP LOG PCT
TO DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_log2.bak‘
WITH INIT ;
GO

--有时候很遗憾,不能进行完整恢复:例如由于灾难当前事务日志不可用。这样的话,我们会需要还原数据库导最近日志备份的末尾
--如果灾难性故障发生在上午2:30,我们将需要恢复数据库到上午2:30的尾日志备份状态。
--因为不能进行尾日志备份,我们只能恢复到特定点,我们要使用STOPAT选项。

--RESTORE Full backup
RESTORE DATABASE PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT.bak‘
WITH NORECOVERY;

--RESTORE Log file 1
RESTORE LOG PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_log.bak‘
WITH NORECOVERY, STOPAT = ‘Jan 01, 2020 12:00 AM‘;

--RESTORE Log file 2
RESTORE LOG PCT
FROM DISK = ‘D:\Company\Data\SQL Server\Backup\PCT_Log2.bak‘
WITH NORECOVERY, STOPAT = ‘Jan 01, 2020 12:00 AM‘;

--Recover the database
RESTORE DATABASE PCT
WITH RECOVERY;
GO
时间: 2024-10-25 11:31:09

SQL Server 备份还原的相关文章

SQL点滴12—SQL Server备份还原数据库中的小把戏

原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, but 2 media families are expected according to the backup device specification”.如下图: 解决办法是首先选中击上一次备份的文件,点击Remove,去掉当前的备份文件,然后再点击OK备份.这样才能正确的备份.也在微软帮助

Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法

SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称,别着急,执行下面语句得到备份文件的逻辑文件名: use master; --用此语句得到备份文件的逻辑文件名 RESTORE FILELISTONLY FROM DISK = N'E:\database\LocalDB\school.bak'; --备份文件的物理路径 上面的SQL命令执行结果是查询

sql server备份还原数据时的问题记录

1.关于“因为数据库正在使用,所以无法获得对数据库的独占访问权”的最终解决方案 关键SQL语句: ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE 用完之后再 alter database [dbname] set online PS.通过使数据库‘下线’来解决此问题 2.还原数据库时,错误提示为:无法覆盖XX/XX.mdf 点击左上角的选择页,选择‘文件’选项,把‘还原为’的目标文件改名即可解决此问题

SQL Server 备份和还原

SQL Server 备份和还原 SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式,它会完整记录下操作数据库的每一个步骤,使用完整恢复模式可以将一个数据库恢复到一个特定的时间点,这个时间点可以是最近一次可用的备份.一个特定的日期和时间的事务. 大容量日志恢复模式 它是对完整恢复模式的补充,就是要对大容量操作进行最小日志记录,节省日志文件的空间. 比如说一次在数据库中插入几十万条记录时,

Centos7.3 下SQL Server 备份及还原的两种方式

Centos7.3 下SQL Server 备份及还原的两种方式 我们前面两篇文章介绍了Centos7.3下SQL Server的安装配置及使用Powershell的管理介绍,今天我们接着介绍如何实现Centos7.3 下SQL Server  备份及还原,有两种方式:1.使用SSMS备份及还原,该方式最为简单也最方便操作的方式,2.使用Linux下SQL Server自带功能命令备份,具体见下: 我们上一篇中创建了一个测试数据库,我们接着拿这个数据库进行测试,我们首先使用第一种方式,使用SSM

SQL Server 备份和还原全攻略

原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性).完全备份也叫完整备份. 差异备份: 差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件.(差异备份过程中,只备份有标记的那些选中的文件和文件夹.它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性). 增量备份: 增量备份是针对于上一次备份(无论是

使用Windows Azure Blob 存储服务进行 SQL Server 备份和还原

好处: 1.灵活.可靠.无限制, 安全的站点外存储 2.即时.高度可用.耐久的备份存档方案. 3.仅对使用的服务付费.可以作为经济合算的站点外备份存档方案. 对于 Windows Azure Blob 存储服务的 SQL Server 备份支持是 SQL Server 2012 SP1 CU2 增强功能,当然sql server 2014也是可以的. 第 1 课:创建 Windows Azure 存储对象 步骤: 1.创建 Windows Azure 存储帐户和 Blob 容器. 创建存储账户,

【SQL Server】还原数据库提示“介质集有2个介质簇,但只提供了1个。必须提供所有成员”的解决办法

今天在对数据库备份与还原的过程中,我遇到一个问题"介质集有2个介质簇,但只提供了1个.必须提供所有成员",下面详细的介绍一下遇到问题的经过与问题解决的方法! 一.备份与还原遇到的问题描述与解决方法: 前两天用户测试我们做的评教系统小软件,有点问题我们过去看了看,想将他们的测试数据备份一下,以便我们修改软件测试使用. 我是这样备份的,数据库备份默认有一个路径:C\...,而我又添加了一个新路径,没将默认路径删除,而是选中新路径,我就理所当然的认为数据库中的数据备份到我新加的路径下了. 今

SQL Server 备份简述

SQL Server支持多种不同类型的备份,但最常用的还是完整备份.差异备份和事务日志备份.至于说到底能使用哪一种备份还要参考数据库的恢复模式,如简单恢复模式就不支持事务日志备份. 完整备份 备份指定数据库中的所有数据,数据量比较大的时候,备份和恢复的成本会比较高,其过程是:首先会锁定数据库,阻塞所有事务,立即在事务日志中写入一个标志1,并迅速释放数据库锁,这个过程是很快的. 然后提取数据文件中所有包含数据的页面写入到备份设备中.不包含数据的页面会被略过. 然后,再一次锁定数据库,阻塞所有事务,