`
deng131
  • 浏览: 672688 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MS-SQL数据库备份和恢复

阅读更多
SQL备份与还原经典文档

SQL备份

1、SQL数据库恢复模型
1)完全恢复模型

(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)能还原全部数据,并可以将数据库恢复到任意指定的时刻。
(4)为保证实现即时点恢复,对数据库的所有*作都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。

(2)大容量日志记录恢复模型

(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)日志中不记录*作细节(如select into、create index等),而只记录*作的最终结果,因此占用日志空间小。
(4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,因此可能产生数据丢失。

(3)简单恢复模型

(1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。
(2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。
(3)不适于生产系统和大规模*作环境下选用。

alter database d1 set recovery simple     --设置数据库恢复模型
alter database d1 set recovery bulk_logged
alter database d1 set recovery full

2、备份设备

1)物理设备

disk:支持本地磁盘或者网络备份
tape:支持磁带机备份
name pipe:支持第三方备份软件

2)逻辑设备
---------------------------
永久备份文件:可以重复使用,应该在备份前创建。
临时备份文件:用于一次性备份,在备份时创建。
-------------------------------------------------
exec sp_addumpdevice 'disk','bak2','e:\back_device\bak2.bak' --创建永久磁盘备份设备
exec sp_addumpdevice 'disk','bak3','e:\back_device\bak3.bak'
----------------------------------------------------------------------
exec sp_addumpdevice 'disk','bak4','\\sv2\backup\bak4.bak' --创建网络永久磁盘备份设备
exec sp_addumpdevice 'disk','bak5','\\sv2\backup\bak5.bak'
----------------------------------------------------------------------
exec sp_dropdevice 'bak5'              --删除备份设备
----------------------------------------------------------------------
backup database d3 to bak3      --将数据库备份到备份设备
backup database d4 to bak4
----------------------------------------------------------------------
restore headeronly from bak2    --查看备份设备中的内容
----------------------------------------------------------------------
backup database d3 to disk='e:\back_file\d3.bak'    --将数据库备份到临时备份文件
backup database d4 to disk='e:\back_file\d4.bak'
----------------------------------------------------------------------
restore database d3 from bak3           --从备份设备还原数据库      
restore database d4 from disk='e:\back_file\d4.bak' --从备份文件还原数据库
----------------------------------------------------------------------
3、使用多个备份文件存储备份
----------------------------------------------------------------------
1)SQL可同时向多个备份文件进行写*作。如果把这些文件放到多个磁带机或磁盘中,则可提高备份速度。
2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。
3)媒体集中的文件必须同时使用,而不能单独使用。
4)可以通过format命令将媒体集重新划分,但原备份集中的数据不能再使用。
--------------------------------------------------------------------
backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并形成Media Set
backup database d3 to bak4      --失败,因Media set中文件必须同时使用
backup database d3 to bak4,bak5,bak6    --成功,将D3也备份到Media Set中
restore headeronly from bak4,bak5,bak6--查看Media Set中的备份内容
----------------------------------------------------------------------
backup database d4 to bak4 with medianame='bak4',format     --重新划分Media Set
backup database d3 to bak5,bak6 with medianame='bak56',format
----------------------------------------------------------------------
backup database d1 to bak1 with init     --with init重写备份设备中内容
backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中
restore headeronly from bak1
----------------------------------------------------------------------
4、备份的方法
----------------------------------------------------------------------
1)完全备份
-------------------------------------------
(1)是备份的基准。在做备份时第一次备份都建议使用完全备份。
(2)完全备份会备份数据库的所有数据文件、数据对象和数据。
(3)会备份事务日志中任何未提交的事务。因为已提交的事务已经写入数据文件中。
--------------------------------------------
backup database d1 to bak1 with init     --完全备份
backup database d1 to bak1 with noinit
----------------------------------------------------------------------
2)差异备份
---------------------------------------------
(1)基于完全备份。
(2)备份自最近一次完全备份以来的所有数据库改变。
(3)恢复时,只应用最近一次完全备份和最新的差异备份。
-----------------------------------------------
backup database d2 to bak2 with init,name='d2_full' --差异备份,第一次备份时应做完全备份
create table b1(c1 int not null,c2 char(10) not null)
backup database d2 to bak2 with differential,name='d2_diff1'
insert b1 values(1,'a')
backup database d2 to bak2 with differential,name='d2_diff2'
insert b1 values(2,'b')
backup database d2 to bak2 with differential,name='d2_diff3'
insert b1 values(3,'c')
backup database d2 to bak2 with differential,name='d2_diff4'
restore headeronly from bak2
----------------------------------------------------------------------
3)事务日志备份
-------------------------------------------------------------
(1)基于完全备份。
(2)为递增备份,即备份从上一次备份以来到备份时所写的事务日志。
(3)允许恢复到故障时刻或者一个强制时间点。
(4)恢复时,需要应用完全备份和完全备份后的每次日志备份。
-------------------------------------------------------------
backup database d3 to bak3 with init,name='d3_full' --日志备份,第一次备份时应做完全备份
create table b1(c1 int not null,c2 char(10) not null)
backup log d3 to bak3 with
insert b1 values(1,'a')
backup log d3 to bak3 with
insert b1 values(2,'b')
backup log d3 to bak3 with
insert b1 values(3,'c')
backup log d3 to bak3 with
restore headeronly from bak3
----------------------------------------------------------------------
create table b1(c1 int not null,c2 char(10) not null)    --Full+Log+Diff
backup log d4 to bak4 with
insert b1 values(1,'a')
backup log d4 to bak4 with
insert b1 values(2,'b')
backup database d4 to bak4 with differential,name='d4_diff1'
insert b1 values(3,'c')
backup log d4 to bak4 with
insert b1 values(4,'d')
backup log d4 to bak4 with
insert b1 values(5,'d')
backup database d4 to bak4 with differential,name='d4_diff2'
restore headeronly from bak4
----------------------------------------------------------------------
日志清除
-----------------------------------------
1)如果日志空间被填满,数据库将不能记录修改。
2)数据库在做完全备份时日志被截断。
3)如果将'Trans log on checkpoint'选项设为TRUE,则结果为不保存日志,即没有日志记录,不建议使用。
4)with truncate_only和with no_log设置日志满时清除日志
5)with no_truncate则可以完整保存日志,不清除,即使在数据文件已经损坏情况下。主要用于数据库出问题后在恢复前使用。可以将数据还原到出故障的那一时刻。
-------------------------------------------
exec sp_dboption d3
exec sp_dboption
sp_dboption 'd3','trunc. log on chkpt.','true'     --设置自动清除数据库日志
sp_dboption 'd3','trunc. log on chkpt.','false'    --将自动清除数据库日志的选项去除
----------------------------------------------------------------------
backup log d4 with truncate_only    --设置D4日志满时清除日志,并做清除记录
----------------------------------------------------------------------
backup log d4 with no_log       --设置D4日志满时清除日志,但不做清除记录
----------------------------------------------------------------------
backup log d4 to bak4 with no_truncate--在D4数据库损坏时马上备份当前数据库日志(DEMO)
--------
使用no_truncate
完全+修改1+差异+修改2+差异+修改3+停止SQL,删除数据库数据文件+重启SQL
backup log no_truncate
再还原,可还原到修改3
----------------------------------------------------------------------
4)文件/文件组备份
------------------------------------------------------------------
(1)用于超大型数据库。
(2)只备份选定的文件或者文件组。
(3)必须同时作日志备份。
(4)还原时用文件/文件组备份和日志备份进行还原。
(5)备份量少,恢复速度快。
------------------------------------------------------------------
create database d5      
on primary
(name=d5_data1,
filename='e:\data\d5\d5_data1.mdf',
size=2MB),
filegroup FG2           --创建数据库时创建filegroup FG2
(name=d5_data2,
filename='e:\data\d5\d5_data2.ndf',    --并将文件d5_data2放到FG2中
size=2Mb)
log on
(name=d5_log1,
filename='e:\data\d5\d5_log1.ldf',
size=2Mb)
use d5
go
alter database d5
add file
(name=d5_data3,
filename='e:\data\d5\d5_data5.ndf',
size=2MB)
to filegroup FG2           --将d5_data3加到文件组FG2中
alter database d5 add filegroup FG3    --增加文件组FG3
alter database d5          --将d5_data4加到文件组FG2中
add file
(name=d5_data4,
filename='e:\data\d5\d5_data4.ndf',
size=2MB)
to filegroup FG3
sp_helpdb d5
create table t1(c1 int not null,c2 char(10) not null) on [primary] --将不同表放到不同filegroup中
create table t2(c1 int not null,c2 char(10) not null) on FG2
create table t3(c1 int not null,c2 char(10) not null) on FG3
----------------------------------------------------------------------
backup database d5 to bak5 with init,name='d5_full'       --filegroup备份
backup database d5 filegroup='primary' to bak5 with
backup log d5 to bak5 with
backup database d5 filegroup='FG2' to bak5 with
backup log d5 to bak5 with
backup database d5 filegroup='FG3' to bak5 with
backup log d5 to bak5 with
----------------------------------------------------------------------
backup database d5 to bak6 with init,name='d5_full'        --file备份
backup database d5 file='d5_data1' to bak6 with
backup log d5 to bak6 with
backup database d5 file='d5_data2' to bak6 with
backup log d5 to bak6 with
backup database d5 file='d5_data3' to bak6 with
backup log d5 to bak6 with
backup database d5 file='d5_data4' to bak6 with
backup log d5 to bak6 with
restore headeronly from bak6
======================================================================
SQL还原
======================================================================
1、验证备份
------------------------------------------------------------
restore headeronly from bak3
restore filelistonly from bak3 with file=1
restore labelonly from bak3
restore verifyonly from bak3
----------------------------------------------------------------------
2、从备份中还原
-------------------------------------------------------------------------
restore headeronly from bak1
restore database d1 from bak1 with file=2         --从完全备份中恢复
----------------------------------------------------------------------
restore headeronly from bak2              --从差异备份中恢复
restore database d2 from bak2 with file=1,norecovery   
restore database d2 from bak2 with file=5,recovery
----------------------------------------------------------------------
restore headeronly from bak3              --从日志备份中恢复
restore database d3 from bak3 with file=1,norecovery
restore log    d3 from bak3 with file=2,norecovery
restore log    d3 from bak3 with file=3,norecovery
restore log    d3 from bak3 with file=4,norecovery
restore log    d3 from bak3 with file=5,recovery
----------------------------------------------------------------------
restore database d3 from bak3 with file=1,norecovery      --恢复到指定时间
restore log    d3 from bak3 with file=2,norecovery
restore log    d3 from bak3 with file=3,norecovery
restore log    d3 from bak3 with file=4,recovery,stopat='2003-08-15 11:29:00.000'
----------------------------------------------------------------------
restore database d5 filegroup='FG2' from bak5 with file=4,norecovery --还原文件组备份
restore log d5 from bak5 with file=5,norecovery
restore log d5 from bak5 with file=7,recovery
----------------------------------------------------------------------
restore headeronly from bak6                 --还原文件备份
restore database d5 file='d5_data3' from bak6 with file=6,norecovery
restore log d5 from bak6 with file=7,norecovery
restore log d5 from bak6 with file=9,recovery
----------------------------------------------------------------------
restore database d5 from bak6 with replace    --删除现有数据库,从备份中重建数据库
----------------------------------------------------------------------
create database d6            --move to将数据库文件移动到新位置
on primary
(name=d6_data,
filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_Data.MDF',
size=2MB)
log on
(name=d6_log,
filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_log.ldf',
size=2MB)
go
backupdatabase d6 to bak6 with init
drop database d6
restore database d6 from bak6
with move 'd6_data' to 'e:\data\d6\d6_data.mdf',
move 'd6_log'to 'e:\data\d6\d6_log.ldf'
sp_helpdb d6
----------------------------------------------------------------------
3、分离与重连接数据库
--------------------------------------
sp_detach_db 'd6'        
sp_attach_db 'd6','e:\data\d6\d6_data.mdf','e:\data\d6\d6_log.ldf'
--------------------------------------
sp_detach_db d6
go
create database d6
on primary
(filename='e:\data\d6\d6_data.mdf')
for attach
go
----------------------------------------------------------------------
4、恢复损坏的系统数据库
----------------------------------------------------------------------
1)先备份MASTER、MSDB
2)停止SQL服务,将MASTER数据库文件删除或者重命名。这样,SQL服务将不能启动。
3)系统数据库的还原
-----------------------------------------------
(1)如果SQL服务还能启动,则从备份中恢复系统数据库。
(2)如果SQL服务不能启动,则需要重建系统数据库。
使用SQL文件夹TOOLS\BINN目录下的Rebuildm.exe重建master数据库。
(3)创建备份设备,指向以前的备份设备。
(4)以单用户模式启动SQL
cd programe files\microsoft sql server\mssql\binn
sqlservr.exe -c -m
(5)进查询分析器,从备份中恢复master数据库。
restore database master from masterbak
restore database msdb from disk='e:\bak\msdb.bak'
MASTER还原后,SQL中用户数据库的信息也会恢复。
(6)如果MASTER没有备份,则需要用sp_attach_db命令将用户数据库附加到新的MASTER数据库中。
分享到:
评论

相关推荐

    MS-sql数据库密码忘了还原数据库命令

    在IT行业中,MS-SQL Server作为一款广泛使用的数据库管理系统,其安全性与数据完整性至关重要。然而,在实际操作过程中,用户可能会遇到忘记数据库管理员密码的情况,这无疑会给数据库的管理和维护带来不便。本文将...

    MS SQL数据库备份和恢复存储过程

    在MS SQL Server中,数据库备份和恢复是维护数据安全与完整性的关键操作。本文将详细介绍如何使用存储过程来实现这两个功能。 首先,我们来看备份数据库的存储过程`pr_backup_db`。这个存储过程用于创建一个数据库...

    ms-sql数据库日志清理

    标题提到的"ms-sql数据库日志清理"是一种专门针对SQL Server 2000数据库日志进行优化和管理的工具。`Reduce_Log.exe`可能是这个日志清理工具的执行文件,它设计用于帮助管理员减小数据库日志的大小,释放不必要的...

    MS SQL数据库系统备份与恢复

    "MS SQL数据库系统备份与恢复"这一主题主要关注如何有效地保护SQL Server中的数据,以防数据丢失或系统故障。 SQL Server提供了多种备份类型,包括完整备份、差异备份、日志备份等,每种都有其特定的应用场景。完整...

    Ms-SQL备份还原工具

    Ms-SQL备份还原工具允许管理员创建完整的数据库备份,差异备份以及事务日志备份,这三种类型的备份各有其特定用途。完整备份会捕获数据库的所有数据,而差异备份则只记录自上次完整备份以来发生的变化。事务日志备份...

    计算机软件-编程源码-ms sql 2000数据库的备份与恢复(例程下载).zip

    本资源包"计算机软件-编程源码-ms sql 2000数据库的备份与恢复(例程下载).zip"显然专注于SQL Server 2000数据库的备份和恢复过程,这对于确保数据安全和业务连续性至关重要。 首先,我们来讨论数据库备份。在SQL ...

    Veritas-NetBackup-5.1设置MS-SQLServer-2000的备份策略的典型配置.docx

    在众多的数据保护方案中,Veritas NetBackup 是一款非常强大的备份与恢复解决方案,它不仅支持多种操作系统,还能够针对特定的应用程序如 MS SQL Server 提供专门的备份策略。本文档将详细介绍如何在 Veritas ...

    MS SQL 数据库备份和还原的几种方法

    本篇文章将详细介绍在MS SQL中如何进行数据库的备份和还原,以便于在数据丢失或系统故障时能迅速恢复。 一、通过企业管理器进行单个数据库备份 这是最基础的备份方式,适合于偶尔需要备份的情况。首先,打开SQL ...

    在PB中实现MS-SQL Server中的功能.pdf

    本文档将详细介绍如何在PB的前端应用程序中实现对后台数据库的实时监控,以及数据的备份和恢复功能。 在多用户联机操作的网络数据库系统中,实时监控数据库活动至关重要,因为它有助于确保系统的安全和稳定性。例如...

    MS SQL数据库自动备份工具

    【MS SQL数据库自动备份工具】是一款使用C#编程语言开发的应用程序,专为管理Microsoft SQL Server数据库的定期备份而设计。这款工具能够帮助系统管理员自动化数据库的备份过程,确保在数据丢失或系统故障时能够迅速...

    14计科接本MS-SQLServer数据库技术实验教案.doc

    【MS-SQLServer数据库技术实验教案】是针对邢台学院14级计算机科学与技术专业接本学生设计的一门实验课程,旨在通过实践操作加强学生对大型数据库管理系统SQL Server 2005的理解和应用能力。这门课程共32学时,1学分...

    ms sql 数据库操作

    在MS SQL数据库操作中,有几项关键的知识点是任何数据库管理员或开发人员都需要掌握的,包括数据库备份与恢复、SQL脚本执行以及数据库应用程序的配置。 首先,我们来探讨数据库备份与恢复。这是确保数据安全和业务...

    数据库差异备份与恢复图解.doc

    完整备份是数据库备份的基础,它会保存数据库的所有数据,包括结构、数据和日志。在SQL Server 2005中,可以创建一个名为"ScoreCard 每月一次完全备份"的SQL Server代理作业来自动化这个过程。在作业的“步骤”选项...

    ms sql 2000数据库的备份与恢复(例程下载).rar_sql 2000_数据库SQL 2000

    使用这些资源,你可以更深入地了解如何在SQL Server 2000中执行备份和恢复操作,从而更好地保护你的数据。 总的来说,理解并熟练掌握SQL Server 2000的备份与恢复机制对于数据库管理员来说至关重要,它能确保在各种...

    基于MS-SQL Server数据库的电视台前期设备管理系统.pdf

    系统的主要功能需求包括设备借出与归还的管理、设备使用和库存信息的查询、部门与人员信息的管理、数据库信息的备份与恢复以及条码信息的录入、修订和打印输出。系统能够为设备从采购、入库、使用、送修到报废的整个...

    ms-sqlserver面试题

    - Log Shipping:用于备份和恢复的异步方法。 6. 性能监控与调优: - DMVs和动态管理函数:获取数据库性能信息。 - SQL Server Profiler:跟踪和分析查询性能。 - Resource Governor:限制资源使用,优化服务器...

    MS-SQL Server热点话题30问

    MS-SQL Server是微软推出的企业级数据库管理系统,其特点包括可扩展性、高性能以及为分布式客户机/服务器计算环境所设计。随着企业数据量的不断增长和业务需求的复杂化,MS-SQL Server在实际应用中可能会遇到各种...

    SQLServer数据库备份再还原之后登录名丢失解决方法

    ### SQL Server 数据库备份后登录名丢失问题及解决方法 #### 背景与问题概述 在进行SQL Server数据库的备份与恢复操作时,经常会出现一个棘手的问题:原本数据库中的登录名在恢复到另一台服务器后消失不见,导致...

    Sql Server数据库自动全备份的脚本(带7z压缩)

    综上所述,利用VBScript和CMD调用SQL Server的备份命令及7-Zip压缩功能,可以创建一个高效、自动化的数据库备份解决方案。同时,结合Oracle备份的相关知识,我们可以为不同类型的数据库构建全面的数据保护策略。

Global site tag (gtag.js) - Google Analytics