一.完整备份、差异备份和事务日志备份的脚本

--完整备份数据库

BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full.bak' WITH INIT

--差异备份数据库

BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_diff.bak' WITH INIT, DIFFERENTIAL   --加上DIFFERENTIAL代表差异备份

--事务日志备份

BACKUP LOG Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_log.bak' WITH INIT   --BACKUP LOG表示备份事务日志,BACKUP DATABASE表示完整或差异备份

--备份事务日志,文件名中包含当前时间,适合定时备份

DECLARE @strbackup NVARCHAR(100)
--改为日期加时间的
SET @strbackup = 'E:\20150609_75\bak\Test_bak_log_'
+ REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ',
''), ':', '') + '.bak'
BACKUP LOG Test_Bak TO DISK = @strbackup WITH INIT;
GO

二. 还原需要修改数据文件路径的多文件数据库(做过分区的)

错误:

上面错误的原因为:原来备份的数据文件在G盘下,还原完整备份时新服务器下不存在G盘这个路径就会报错。

解决办法:可以使用WITH MOVE让数据文件保存到新的有效路径下,首先在磁盘下建立这个有效路径。

正确的还原多文件备份的方法如下:

方法1(脚本):

还原完整备份:

RESTORE DATABASE [DigitalLibDB]
FROM DISK = N'E:\20150609_75\DigitalLibDB_20150609_FULL.bak' --完整备份的路径
WITH MOVE 'DigitalLibDB_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB.mdf',
MOVE 'UI0' TO 'C:\Program Files\Microsoft SQL --重新指定文件的路径,取决文件数量Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_1.ndf',
MOVE 'UI1' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_2.ndf',
MOVE 'UI10' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_3.ndf',
MOVE 'UI11' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_4.ndf',
MOVE 'UI12' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_5.ndf',
MOVE 'UI13' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_6.ndf',
MOVE 'UI14' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_7.ndf',
MOVE 'UI15' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_8.ndf',
MOVE 'UI16' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_9.ndf',
MOVE 'UI2' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_10.ndf',
MOVE 'UI3' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_11.ndf',
MOVE 'UI4' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_12.ndf',
MOVE 'UI5' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_13.ndf',
MOVE 'UI6' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_14.ndf',
MOVE 'UI7' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_15.ndf',
MOVE 'UI8' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_16.ndf',
MOVE 'UI9' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_17.ndf',
MOVE 'ftrow_RegInfo_UnitName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_18.ndf',
MOVE 'DigitalLibDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DigitalLibDB_Log.ldf',
STATS = 10, REPLACE,
NORECOVERY
GO

WITH MOVE TO:重新指定文件的路径,WITH MOVE TO数量取决于数据库文件数量

STATS = 10:没完成10%显示一条记录

REPLACE:覆盖现有数据库

NORECOVERY:不对数据库进行任何操作,不回滚未提交的事务

完整备份结果:

还原差异备份:(只有一个差异备份的情况,当还原多个差异备份时,通常前面的都用WITH NORECOVERY,还原最后一个差异备份才能用WITH RECOVERY)

注:移动数据文件是完整备份时移动,差异备份和日志备份不保存文件路径,差异备份和日志备份还原时不能移动路径。

RESTORE DATABASE [DigitalLibDB] FROM DISK='E:\20150609_75\新建文件夹\DigitalLibDB_20150610_Diff.bak' WITH RECOVERY

差异备份还原结果:

方法2:(可视化界面操作)

还原完整备份:

选择还原数据库

选择完整备份路径

选择覆盖现有数据库,选择RESTORE WITH NORECOVERY选项

还原完整备份成功

此时,差异备份还未完成,数据库还处于正在还原状态

还原差异备份,选择任务-还原-文件和文件组

所以,此时还原这个差异备份还是应该使用脚本来完成,不用移动文件。

RESTORE DATABASE [DigitalLibDB] FROM DISK='E:\20150609_75\新建文件夹\DigitalLibDB_20150610_Diff.bak' WITH RECOVERY --还原差异备份

三.不需要修改数据库文件路径的差异备份还原

注意:

对于不需要修改数据库文件路径的差异备份还原,使用sqlserver可视化界面还原是没问题的。

此处,还原差异备份成功,原因是备份时文件是C盘下这个目录,还原时还是还原到C盘这个目录,不需要修改路径。

对于不需要修改数据库文件路径的数据库完整备份、差异备份和事务日志备份的还原过程如下(使用脚本):

--还原顺序:完整备份--差异备份--日志备份

--还原单文件数据库的完整备份,数据库文件路径一致,不用移动路径的情况

RESTORE DATABASE [Test_Bak]
FROM DISK = N'E:\20150609_75\local\Test_Bak_full.bak'
WITH
STATS = 10, REPLACE,
NORECOVERY
GO

--还原差异备份

RESTORE DATABASE [Test_Bak]
FROM DISK = N'E:\20150609_75\local\Test_Bak_diff.bak'
WITH
STATS = 10,
NORECOVERY
GO

--还原日志备份

RESTORE DATABASE [Test_Bak]
FROM DISK = N'E:\20150609_75\local\Test_Bak_Log.bak'
WITH
STATS = 10,
RECOVERY

希望对你们有所帮助,如果你觉得不错,请在右边推荐一下喔,欢迎拍砖~

SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]的更多相关文章

  1. sql server 备份与恢复系列六 文件组备份与还原

    一. 概述 文件备份是指备份一个或多个文件或文件组中的所有数据.使用文件备份能够只还原损坏的文件,而不用还原数据库的其余部份,从而加快恢复速度.例如,如果数据库由位于不同磁盘上的若干文件组成,在其中一 ...

  2. sql server 2012 如何收缩事务日志

    sql2008不再支持 BACKUP LOG 数据库名 WITH NO_LOG   语句 BACKUP Log zxta with no_log 截断事务日志 sql2008 提示错误如下 BACKU ...

  3. 2017-3-17 SQL server 数据库 视图,事务,备份还原,分离附加

    1.视图:只能查看,不能增删改不能有重复列 create view 名字as查询语句 2.事务:保证流程的完整执行 begin tran --开始事务监控 被监控的代码 ... ...if @@ERR ...

  4. sql server 备份与恢复系列二 事务日志概述

    1.1  日志文件与数据文件一致性 在上一章备份与恢复里了解到事务日志的重要性,这篇重点来了解事务日志. 事务日志记录了数据库所有的改变,能恢复该数据库到改变之前的任意状态.在sql server实例 ...

  5. SQL Server 迁移数据库 (四)备份和还原

    1. 备份 2. 复制 3. 粘贴 4. 还原 截图软件出问题了,估计重启下就好,但是备份还原比较简单,懂的都懂,马上下班了就不贴图了.

  6. sql server 完整备份、差异备份、事务日志备份

    一. 理解: 完整备份为基础, 完整备份可以实物回滚还原,但是由于完整备份文件过大,对硬盘空间比较浪费这是就需要差异备份 或者 事务日志备份. 差异备份还原时,只能还原到备份的那个点, 日志备份还原时 ...

  7. SQL Server 2012完全备份、差异备份、事务日志备份和还原操作;

    SQL Server 2012完全备份.差异备份.事务日志备份和还原操作: 1.首先,建立一个测试数据库,TestA:添加一张表,录入二条数据:备份操作这里我就不详细截图和讲解了.相信大家都会备份,我 ...

  8. SQL事务日志备份时的问题

    1.在进行事务日志备份的时候,如下图: 3041 消息的疑难解答时的考虑事项:不会只是一个数据库或所有数据库出现问题吗?是备份到本地存储区或远程存储吗?哪种类型的备份 (数据库备份. 日志备份和差异备 ...

  9. SQL Server 2008如何创建定期自动备份任务

    我们知道,利用SQL Server 2008数据库可以实现数据库的定期自动备份.方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,下面我们将SQL SERVER 200 ...

随机推荐

  1. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  2. CSS优先级算法是如何计算?

    CSS的specificity特性或非凡性,它是一个衡量css优先级的一个标准, 既然的标准就有判定规定和计算方式,specificity用一个四位数来表示, 更像四级从左到右,左的最大级,一级大于一 ...

  3. Sublime Text 使用 Emmet 补全错误问题

    Sublime Text安装了Emmet后,使用Tab或者ctrl+e发现补全有问题,如: div.testClass#testId 变成了 div.<testClass id="te ...

  4. linux下source命令的基本功能

    source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令.注:该命令通常用命令“.”来替代.如:source .bash_rc 与 . .bas ...

  5. Java do while求和

    用do while结构求0~100的整数数字之和. 代码如下: public class DoWhileDemo { public static void main(String[] args) { ...

  6. 强大的网络通信框架(实现缓存)--第三方开源--volley

    Android Volley是Android平台上很好用的第三方开源网络通信框架.使用简答,功能强大. Android Volley的库jar包Volley.ja下载连接地址:Volley下载 下载后 ...

  7. 表格控件表头栏目(Column)与数据表头步

    不用手工增加栏目的列,也就是Column,由数据库的查询结果自动创建. 用的是Delphi2010,安装了Dev,用CxGrid显示数据库查询结果.用什么控件没有关键,道理相同的.

  8. 在ASP.NET MVC中以post方式传递数组参数的示例

    最近在工作中用到了在ASP.NET MVC中以post方式传递数组参数的情况,记录下来,以供参考. 一.准备参数对象 在本例中,我会传递两个数组参数:一个字符串数组,一个自定义对象数组.这个自定义对象 ...

  9. 如何在Eclipse中配置Tomcat

    1.Eclipse EE 配置Tomcat Eclipse EE 主要用于Java Web开发和J2EE项目开发.Eclipse EE中配置Tomcat比较简单,新建一个Tomcat Server即可 ...

  10. open/fopen read/fread write/fwrite区别

    fopen /open区别 UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别.1 ...