SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx

上传人:飞**** 文档编号:44942803 上传时间:2022-09-22 格式:DOCX 页数:8 大小:322.84KB
返回 下载 相关 举报
SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx_第1页
第1页 / 共8页
SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx》由会员分享,可在线阅读,更多相关《SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第8页 共8页SQL Server数据库的备份与还原以及在项目中是怎样去实现的2012-03-13 11:39:21标签:SQL Server数据库的备份与还原-备份的设备有2种(临时设备和永久设备) 注意:默认下的备份类型是完整备份-第一种:backup database Company to disk=d:backup1.bak-临时设备/*如果这里不指定明确路径的话(如:backup database company to disk=backup1.bak),那么备份的数据库将会自动备份到系统指定的目录下:C:Progra

2、m FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup*/-第二种:/*第一步首先建立永久备份设备 (系统自带的存储过程)在master 数据库中就会找到如图1:*/-执行语句如:exec sp_addumpdevice disk,disk_company,D:2.bak-永久设备-执行结果就会出现如图2:-多了一个备份设备:disk_company-第二步:backup database company to disk_company with noinit -默认表示追加(不覆盖)-好了 备份完成 !-现在我来还原数据库(我用的是第一种方法备份的,所以我

3、要第一种方法来还原) ,-原来的数据如图3:-经过我手动删除几个表后的数据库如图4:-执行语句:restore database Company from disk=d:backup1.bak -注意备份到哪里去就要从还原哪里来-执行后会出现什么呢?请看错误消息:/*消息 3159,级别 16,状态 1,第 1 行尚未备份数据库 company 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。消息 3013,级别

4、 16,状态 1,第 1 行RESTORE DATABASE 正在异常终止。*/-为什么会出现这种错误呢 我们可以从错误的消息中找到解决方案!-我们去看看这个数据库的恢复模式如图5:-因为如图的恢复模式是 :完整; 所以它的功能是将所有事务都写入日志,把所有数据库文件的都还原-方案一:我现在只是还原的数据库文件 并没有备份日志文件 所以我再去备份日志文件backup log Company to disk=d:backup2.bak -备份日志文件restore database Company from disk=d:backup1.bak -再去还原数据库restore log Compa

5、ny from disk=d:backup2.bak-这步可有可无-执行的结果为:如图6:-方案二 由于错误消息中的提示:请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。-消息 3013,级别 16,状态 1,第 1 行 所以 我想到去覆盖掉日志文件 虽然恢复模式是完整的 但是我要覆盖它 也是可以的-只是对数据库的操作没有日志没有完全还原而已 也是可以的-执行语句如下:restore database Company from disk=d:backup1.bak WITH REPLACE-执行成功/*已为数据库 Company,

6、文件 Company_Data (位于文件 1 上)处理了 224 页。已为数据库 Company,文件 Company_Log (位于文件 1 上)处理了 5 页。RESTORE DATABASE 成功处理了 229 页,花费 0.225 秒(8.319 MB/秒)。*/-方案三:我想了一下 我只是备份了数据库,但是没有备份日志文件 根据备份还原的原理/*恢复模式 说明简单 不用备份的事务日志,即可还原用于小型数据库和不经常更改的数据库完整 所有事务都被记录到日志中保留所有日志,直到事务日志备份用于生产数据库大容量日志 完整恢复模式的补充不将大容量日志操作写入日志*/-所以我修改了这个数据库

7、的属性中的恢复模式 改为 “简单”-如图7:-我直接执行还原的代码restore database Company from disk=d:backup1.bak/*执行结果:已为数据库 Company,文件 Company_Data (位于文件 1 上)处理了 224 页。已为数据库 Company,文件 Company_Log (位于文件 1 上)处理了 5 页。RESTORE DATABASE 成功处理了 229 页,花费 0.224 秒(8.356 MB/秒)。*/-三种还原的解决方案成功-但是这用到项目中数据库正在使用的话是不成功的 ,它具有排它性 !-所以我写了一个存储过程来解决,

8、这也是很多程序员花了很久才解决的问题-代码用法如下 :有附带的例子下载-创建存储过程killspidcreate proc killspid (dbname varchar(20)asbegindeclare sql nvarchar(500)declare spid intset sql=declare getspid cursor forselect spid from sysprocesses where dbid=db_id(+dbname+)exec (sql)open getspidfetch next from getspid into spidwhile fetch_status -1beginexec(kill+spid)fetch next from getspid into spidendclose getspiddeallocate getspidendGO-说明:-1.此存储过程应写在Master中;-2.以上代码就是解决因为数据库正在使用,所以未能获得对数据库的排它访问权的问题,不然系统有时会报错;第 8 页 共 8 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁