欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:1701670       资源大小:317.17KB        全文页数:7页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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:Program 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:-经过我手动删除几个表后的数据库如图4:-执行语句:restore database Company from disk='d:backup1.bak' -注意备份到哪里去就要从还原哪里来-执行后会出现什么呢?请看错误消息:/*消息 3159,级别 16,状态 1,第 1 行尚未备份数据库 "company" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。消息 3013,级别 16,状态 1,第 1 行RESTORE DATABASE 正在异常终止。*/-为什么会出现这种错误呢 我们可以从错误的消息中找到解决方案!-我们去看看这个数据库的恢复模式如图5:-因为如图的恢复模式是 :完整; 所以它的功能是将所有事务都写入日志,把所有数据库文件的都还原-方案一:我现在只是还原的数据库文件 并没有备份日志文件 所以我再去备份日志文件backup log Company to disk='d:backup2.bak' -备份日志文件restore database Company from disk='d:backup1.bak' -再去还原数据库restore log Company 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',文件 'Company_Data' (位于文件 1 上)处理了 224 页。已为数据库 'Company',文件 'Company_Log' (位于文件 1 上)处理了 5 页。RESTORE DATABASE 成功处理了 229 页,花费 0.225 秒(8.319 MB/秒)。*/-方案三:我想了一下 我只是备份了数据库,但是没有备份日志文件 根据备份还原的原理/*恢复模式 说明简单 不用备份的事务日志,即可还原用于小型数据库和不经常更改的数据库完整 所有事务都被记录到日志中保留所有日志,直到事务日志备份用于生产数据库大容量日志 完整恢复模式的补充 不将大容量日志操作写入日志*/-所以我修改了这个数据库的属性中的恢复模式 改为 “简单”-如图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/秒)。*/-三种还原的解决方案成功-但是这用到项目中数据库正在使用的话是不成功的 ,它具有排它性 ! -所以我写了一个存储过程来解决,这也是很多程序员花了很久才解决的问题-代码用法如下 :有附带的例子下载-创建存储过程killspidcreate proc killspid (dbname varchar(20) as begin declare sql nvarchar(500) declare spid int set sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+dbname+''')' exec (sql) open getspid fetch next from getspid into spid while fetch_status < >-1 begin exec('kill '+spid) fetch next from getspid into spid end close getspid deallocate getspid endGO-说明:-1.此存储过程应写在Master中;-2.以上代码就是解决因为数据库正在使用,所以未能获得对数据库的排它访问权的问题,不然系统有时会报错; 

    注意事项

    本文(SQL Server数据库的备份与还原以及在项目中是怎样去实现的.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开