当前位置: 首页 > news >正文

数据库——实验12 数据库备份和还原

1. 备份设备的概念和方法

备份设备是指 SQL Server 中存储数据库和事务日志备份副本的载体,备份设备可以被定义成本地的磁盘文件、远程服务器上的磁盘文件、磁带。

在创建备份时,必须选择要将数据写入的备份设备。SQL Server 2005 可以将数据库、事务日志和文件备份到磁盘和磁带设备上。

 SQL   Server中,可以使用sp_addumpdevice 语句创建备份设备,其语法形式如下:

sp_addumpdevice { 'device_type' }

[ ,'logical_name'] [ ,'physical_name'] [ ,{{controller_type l 'device_status'}} ]

说明:

·device_type 表示设备类型,其值可为 disk(磁盘)  tape(磁带)

·logical_name 表示设备的逻辑名称。

·physical_name 表示设备的实际名称。

·controller_type  device_status 可选项,可以不必输入。

2. 数据库备份和还原的概念

1)数据库备份

数据库备份可以创建备份完成时数据库内存在的数据的副本,这个副本能在遇到故障时恢复数据库。这些故障包括媒体故障、硬件故障(例如,磁盘驱动器损坏或服务器报废), 用户操作错误(例如,误删除了某个表)、自然灾害等。此外,数据库备份对于例行的工作(例如,将数据库从一台服务器复制到另一台服务器、设置数据库镜像、政府机构文件归档和灾难恢复)也很有用。

 SQL Server数据库或事务日志进行备份时,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。SQL Server   备份数据库是动态的,在进行数据库备份时,SQL Server允许其他用户继续对数据库进行 操作。执行备份操作必须拥有对数据库备份的权限许可,SQL  Server 允许系统管理员、 数据库所有者和数据库备份执行者备份数据库。备份是数据库系统管理的一项重要内容, 也是系统管理员的日常工作。

2)数据库还原

数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中 还原数据库,数据库还原是指将数据库备份加载到系统中的过程。系统在还原数据库的过 程中,自动执行安全性检查、重建数据库结构以及完成填写数据库内容。安全性检查是还原数据库时必不可少的操作,这种检查可以防止偶然使用了错误的数据库备份文件或者不兼容的数据库备份覆盖已经存在的数据库。SQL   Server 还原数据库时,根据数据库备份文件 自动创建数据库结构,并且还原数据库中的数据。

3. 各种备份数据库方法

SQL Server 2005 提供了4种不同的备份方式,分别为:

1)完整备份和完整差异备份

完整备份:即完整地备份整个数据库,同时也备份与该数据库相关的事务处理日志。 完整差异备份:只备份自上次数据库备份后发生更改的数据库,差异备份。

2)部分备份和部分差异备份

3)事务日志备份

事务日志备份序列提供了连续的事务信息链,可支持从完整备份、完整差异备份或文件备份进行快速还原。

4)数据库文件和文件组备份

当时间限制使得备份整个数据库不切实际时,可以备份数据库文件和文件组,而不是备份完整数据库。

4. 使用T-SQL 语句备份和还原数据库

1)备份整个数据库

使用T-SQL  语句进行备份时,需要使用BACKUP DATABASE语句,语法如下:

BACKUP DATABASE

{ database_name | @database_name_var}

TO

<backup_file>[,…n]

[ with

[ [,] format ]

[ [,] { init | noinit } ]

[ [,] restart ]

]

<backup_file>::={ backup_file_name | @backup_file_evar } | { disk | tape }

={ temp_file_name | @temp_file_name_evar }

说明:

·BACKUP DATABASE 备份数据库。

·{ database_name | @database_name_var}  要备份的数据库的名称。可以直接指定数据库名称,也可以使用变量来存储数据库名称。

·TO <backup_file> [,…n] :指定备份文件的位置。可以指定一个或多个备份文件。备份文件可以存储在磁盘或磁带上。

·with 这是指定备份选项的关键字。

·format :(备份选项之一用于指定备份文件的格式。如果指定了该选项,备份文件将以新的备份格式进行保存。如果未指定此选项,则备份文件将以与原始备份相同的格式进行保存。

·init | noinit (备份选项之一)init 表示初始化备份介质并覆盖现有的备份集。noinit 表示将备份添加到现有备份集中。

·restart 备份选项之一用于指示备份操作在出现错误时是否应重新启动。

总体而言,这段 T-SQL 代码的作用是备份指定的数据库到指定的备份文件中,并可以选择指定备份的格式、是否覆盖现有备份、以及在错误时是否重新启动备份操作。

2)还原整个数据库

使用T-SQL  提供的 RESTORE   语句还原数据库,其语法如下:

RESTORE   DATABASE

[ from <backup_device [ ],…n>]

[ with

[ [,] file=file_number]

[ [,] move 'logical_file_name'  to 'operating_system_file_name' ]

[ [,] replace]

[ [,] { norecovery | recovery l standby=undo_file_name } ]

<backup_device>::={ { backup_device_name | @backup_device_name_evar } | { disk | tape | pipe }

={ temp_backup_device l @temp_backup_device_var }

说明:

·RESTORE   DATABASE : 还原数据库的命令。

·[ from <backup_device [ ],…n>] : 指定要从哪些备份设备还原数据库。可以指定一个或多个备份设备。

·with : 这是指定还原选项的关键字。

·file=file_number : 这是还原选项之一,用于指定要还原的备份文件的文件号。每个备份文件都有一个文件号。

·move 'logical_file_name'  to 'operating_system_file_name'  : 如果数据库文件的物理位置已更改,您可以使用此选项将数据库文件移动到新的位置。logical_file_name是数据库中的逻辑文件名,operating_system_file_name是操作系统中的文件路径和文件名。

·replace : 这是一个还原选项,用于指示是否覆盖现有的数据库。如果指定了该选项,则数据库将被还原并替换为现有数据库。

·norecovery | recovery : (还原选项之一),用于指定还原操作后数据库的状态。norecovery 表示数据库将保持不可用状态,您可以在完成所有还原操作后手动恢复数据库。recovery 表示数据库将被还原并且立即可用。

·standby=undo_file_name : 如果要将数据库设置为 standby 恢复模式,则可以使用此选项指定用于存储 undo 文件的位置和名称。

总体而言,这段 T-SQL 代码的作用是从指定的备份设备还原数据库,并可以选择指定要还原的备份文件、移动数据库文件的位置、是否替换现有数据库以及数据库的恢复状态。 

·<backup_file>::=: 备份文件的语法声明

·{ backup_file_name | @backup_file_evar }: 备份文件的名称(备份文件的名称/变量存储备份文件的名称)。

·{ disk | tape }: 备份文件的类型。磁盘(disk)或磁带(tape)。

·={ temp_file_name | @temp_file_name_evar }: 备份文件的临时名称。

相关文章:

  • 网络通信(一)
  • Github 2024-05-24 Java开源项目日报 Top10
  • 缪尔赛思又来到了你的面前(哈希)
  • windows、mac、linux中node版本的切换(nvm管理工具),解决项目兼容问题 node版本管理、国内npm源镜像切换
  • python:pycharm虚拟解释器报错环境位置目录为空
  • 人生苦短,我学python之数据类型(下)
  • “高考钉子户”唐尚珺决定再战2024年高考
  • Proteus仿真小技巧(隔空连线)
  • C语言:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中
  • 揭秘Python的魔法:装饰器的超能力大揭秘 ‍♂️✨
  • AI视频智能分析技术赋能营业厅:智慧化管理与效率新突破
  • 【SpringCloud】Spring Cloud基本介绍
  • python爬虫-爬小说
  • PTT票据传递攻击
  • 基于单片机电梯控制系统设计与实现
  • 分享一款快速APP功能测试工具
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Apache Spark Streaming 使用实例
  • IDEA常用插件整理
  • Java程序员幽默爆笑锦集
  • java正则表式的使用
  • nginx 负载服务器优化
  • Otto开发初探——微服务依赖管理新利器
  • python_bomb----数据类型总结
  • Python十分钟制作属于你自己的个性logo
  • Shadow DOM 内部构造及如何构建独立组件
  • Spring Cloud中负载均衡器概览
  • SQLServer之创建显式事务
  • Vue2.x学习三:事件处理生命周期钩子
  • vue-router的history模式发布配置
  • 爱情 北京女病人
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 解决iview多表头动态更改列元素发生的错误
  • 时间复杂度与空间复杂度分析
  • 使用 Docker 部署 Spring Boot项目
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习使用ExpressJS 4.0中的新Router
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 阿里云服务器购买完整流程
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • $(function(){})与(function($){....})(jQuery)的区别
  • $.ajax()
  • (003)SlickEdit Unity的补全
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (zt)最盛行的警世狂言(爆笑)
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十八)SpringBoot之发送QQ邮件
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET建议使用的大小写命名原则
  • .net连接MySQL的方法