公司的服务器奔溃了,事先没相应的保护措施,使得公司遭到了较大损失,为了以后不再出现类似事件,在系统中引入备份机制,使得数据库被破坏后损失降到最低。
数据的导出和导入
数据转换服务
数据转换服务DTS(Data Transmission Service)提供数据传送功能,可以通过交互操作从不同的数据源中导入数据,数据的来源特性可以用于查询数据的导入时间,地点以及运算方法。
数据的导入和导出是以相同格式读写数据,从文本或者oracle书库中导入数据到sqlserver,DTS也可以将sqlserver数据导出到一个ODBC数据源或者Excel表。
数据转换数据源类型
使用数据转换服务导入与导出,可以连接到以下数据源:
- 大多数OLE DB和ODBC数据源
- 文本文件
- 一个或多个sqlserver实例
- oracle,informix,Access,FoxPro数据库
- Excel工作表格
销售管理数据库数据的导出和导入
注意:这个Excel文件需要提前建立的,否则没选项
可以预览导出的数据
然后去对应的目录打开Excel文件
导出的效果如图
导出查询语句的数据
如果需要导出的数据并不是一个对象,而是需要从数据表检索的数据,可以使用查询语句来规定导出数据的范围
基本步骤和上面一样
导入数据
导入外部Excel的步骤和导出的步骤类似,只是个别设置正好相反
将Excel中买家工作表导入销售管理数据库的买家表
这里可以先预览一下导入的数据
注意:这里如果导入的Excel如果有空行,由于主键是唯一的,可能会报错(主键ID为空格)
数据导入进去了
数据库的备份和还原
由于理论知识太多,不如先来一个实际操作感受一下数据库的备份
销售管理数据库备份
公司的日常运行情况为早上8点营业,中午11点30休息,下午13点30营业,晚上8点下班,通常每天晚上5点到8点为销售比较集中的时间。
根据这个情况,可以分析出,数据库每天的首次运行时间应该是早上8点,结束的时间是在晚上8点,所以每天晚上下班后应该对数据库进行一次完整备份,并且每进行一次完整备份后,上次的备份文件就不需要保存了。
在每天的运行过程中,11点30分会有一次休息情况,此时应该进行一次差异备份,所有的备份都备份到指定的备份设置中。
依据分析,制定备份方案:立即完成一次完成备份,然后执行每晚8点进行一次完整备份,并删除上次备份,最后每天中午11点30进行一次差异备份。
创建备份设备
指定设备名称和备份的地址
销售管理的完整备份
设置源数据
设置备份集信息
根据要求,每天晚上8点都会进行一次完整备份,前一天的备份就不需要了,备份过期时间应该是1天,所以这里选择晚于按钮,设置1天
目标信息
确认备份
备份计划制定
普通数据库人工操作可以,但是如果每天晚上8点都进行一次完整备份,既不方便也很难保证,所以,通过sqlserver中的维护计划功能完成。
将工具栏的“备份数据库任务”拖动到右边的任务窗口
双击红叉,打开“备份数据库任务”窗口
备份类型选完整
数据库选择“销售管理”
备份过期时间设置为晚于1天
然后确定
也可以先点击“查看T-SQL”查看sql
计划制定
打开作业计划属性
完成,保存即可。
差异备份
接下来是每天中午11点30的差异备份,步骤类似
确定,保存
还原数据库
选择需要还原的数据库,右键,任务,还原,选择数据库
数据库备份机制
数据库故障类型
数据库故障类型可以归为5种:
- 事务故障,事务执行到最后没有正常提交,有的可以通过事务程序本身发现,有的是非预期的,事务程序不能处理。
- 系统故障,操作系统故障,CPU故障,DBMS代码错误,突然停电,这是内存内容,尤其是缓冲区内容丢失,但是存储在外存的数据未受影响。
- 介质故障,磁盘损坏,磁头碰撞,瞬时磁场干扰,虽然发生可能性最小,但是破坏性最大,数据无法恢复。
- 计算机病毒,一些恶意人为编制的计算机程序破坏。
- 用户操作错误,用户有意无意的删除数据库中有用数据或加入错误数据
数据库备份类型
sqlserver备份方式有4种:
- 完整备份,备份整个数据库,包括用户表,系统表等,还有事务日志,需要较大空间,备份时间长。
- 差异备份,是完整备份的补充(需要先还原完整备份),比完整备份小,速度快,因此可以经常使用。
- 事务日志备份,备份事务日志内容,可以使用事务日志备份将数据库还原到故障点,但是必须先还原完整备份,然后依次还原每个事务日志备份。
- 文件和文件组备份,备份某些文件,可以分多次来备份数据库,避免大型数据备份的时间过长,当数据库文件非常大,采用这个备份很有效。当数据库文件损坏,可以只还原被损坏的文件或文件组,从而加快了还原速度。
设计备份策略
sqlserver中可以将数据库备份到磁盘或者磁带,备份到磁盘有2种方式:
- 文件方式
- 备份设备方式
2种方式都体现为文件形式
备份数据库主要考虑:
- 备份时间
- 时间间隔
- 备份方式
- 备份地方
如果数据库中数据变动比较频繁,可以使用3种备份方式交替使用。
比如,每天下班时做一次完整备份,在做完完整备份之前每隔8小时做一次差异备份,做完2次差异备份之间每隔1小时做一次事务日志备份。
这样,一旦数据库发生损坏,可以将数据还原到最近1小时以内的状态,同时又能减少数据库备份数据的时间和减少备份数据库文件的大小。
备份设备
数据库系统中专门用来存储备份数据的物理设备,常用的设备包括磁盘备份设备,磁带备份设备,命名管道备份设备
其中磁盘备份设备是最常用的。他的物理名称是备份地址和文件名的组合,如“D:\backup\back20180826.bak”,他的逻辑名称存储在sqlserver的sysdevices系统表中,如销售管理备份20180826.
数据库还原方式
大致有4种:
- 完整备份还原
- 无论是做完整备份还原,差异备份还原,事务日志还原,第一步都是做完整备份还原。
- 差异备份还原
- 完整备份还原之后,还原最后一次做的差异备份。
- 事务日志备份还原
- 这个比较复杂,例如某个数据库在每周日做一次完整备份,每天晚上21点做一次差异备份,在白天每3小时做一次事务日志备份。
- 假设在周五早上8点发生故障,那么还原的步骤是:
- 还原周日的完整备份
- 还原周四晚上21点做的差异备份
- 依次还原差异备份之后的事务日志备份,就是周四晚上24点,周五早上3点,周五早上6点所作的事务日志备份
- 文件和文件组备份还原
- 如果数据库某个文件损坏了,可以使用该还原模式
- 注意,还原之前查看数据使用状态,如果有其他人在使用,则无法还原数据库。
还原模式设置
还原模式分为3种:
简单模式,可以将数据库还原到上一次备份,因为没有日志备份,只能还原到最近备份数据库的时间,而不能还原到特定的时间点。
完整模式,保留了事务日志,没有还原到故障点。
大容量日志模式,记录大多数大容量操作,完整记录其他事务,通常作为完整还原模式的补充。
ok,数据库备份的原理就说到这里。
SQL Serever学习12——数据库的备份和还原的更多相关文章
-
如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
-
SQL Serever学习5——数据库配置
数据库的主要属性 限制访问 用来设置数据允许用户访问的状态,或者说允许多少客户访问,有3个选项: MULTI_USER(多个),大多数数据库正常状态,允许多个用户同时访问该数据库. SINGLE_US ...
-
SQL Serever学习17——数据库的分析和设计
数据库的分析和设计 设计数据库确定一个合适的数据模型,满足3个要求: 符合用户需求,包含用户所需的所有数据 能被数据库管理系统实现,如sqlserver,oracle,db2 具有比较高质量,容易理解 ...
-
SQL Serever学习13——数据库编程语言
编程基础 注释 注释命名来对一些语句进行说明,便于日后维护或者其他用户理解,注释不会执行. 单行注释 SELECT GETDATE() --查询当前日期 多行注释 /* 注释有助于 理解操作的内容 查 ...
-
SQL Serever学习11——数据库的安全管理
公司管理软件设计完成,但是日常工作繁忙,向领导提出增加几个管理员,帮助管理和维护系统,领导同意了,但是要求一定要管理好这几个管理员用户,保证数据库的安全. 修改身份验证模式 数据库验证机制 sqlse ...
-
用分离、附加的方式实现sql server数据库的备份和还原
一.数据库分离.附加的说明 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用 ...
-
SQL server 2008数据库的备份与还原、分离(转)
SQL server 2008数据库的备份与还原.分离(转) 一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Ser ...
-
SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原
sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :htt ...
-
linux下 mysql数据库的备份和还原sql
1.备份 [root@CentOS ~]# mysqldump -u root -p mysql > ~/mysql.sql #把数据库mysql备份到家目录下命名为mysql.sql Ente ...
随机推荐
-
自己动手写文件查找,字符串查找,查询jar包等工具
文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...
-
NSString进行urlencode编码
今天在项目开发过程中,需要给webView传一个url,但是web端需要我将url中的一个变量进行urlencoding编码.这个主要原因是怕这个参数中存在一些转义字符,ok!这个没有问题,一开始我只 ...
-
(转)JITComplier、NGen.exe及.NET Native
一.JITComplier 如你所知,JIT(just-in-time或“即时”)编译器是CLR的重要组件,它的职责是将IL转换成本地cpu指令. <<CLR via C#>> ...
-
docker一些命令
1.创建image(先创建Dockerfile) docker build -t xxx/xxx . 2.删除image docker rmi xxxxx(image id) docker rmi r ...
-
asp.net 网站所有请求跳转到同一个页面
应用场景:网站维护和未开发完成时,一般需要把所有请求都跳转的一个相关说明的页面,这样用户不至于困惑这个网站是不存在还是怎么了. Solution1:使用一个名称为 app_offline.htm(名字 ...
-
linux的基本命令
find: find [路径] [选项] [查找规则] [动作] -print 打印出找到的文件,以\n结束 -print0 打印出找到的文件,无换行 -exec command 对找到的文件执行命令 ...
-
python第一百零七天-- Django 基础 2
1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...
-
sqlAlchemy语法增删改查
更多参见:https://www.cnblogs.com/tangpg/p/8528835.html?tdsourcetag=s_pcqq_aiomsg sqlalchemy-查询 User这个类创建 ...
-
AMD和CMD规范
1.名词解释AMD:Asynchronous Modules Definition异步模块定义,提供定义模块及异步加载该模块依赖的机制.CMD:Common Module Definition 通用模 ...
-
解题:HNOI 2013 Cards
题面 除了不洗牌以外,每种洗牌方式的每个循环里的颜色必须一样,然后大力背包一下就好了.最后记得把不洗牌的方案也算进去 #include<cstdio> #include<cstrin ...