首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 再次请教数据库恢复问题 [已结贴,结贴人:kaihea]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:28:04 楼主
    BACKUP DATABASE educational to disk = '"+addr+"' WITH FORMAT
    备份的路径存放在表backdate里,
    id      name    time
    1 e:\liu 2008-04-08
    3 f:\aaa  2008-04-08
    8 c:\567 2008-04-29
    如何恢复这个备份,越简单越好!
    用restore DATABASE educational from  disk = '"+addr+"' 恢复时报错:
    服务器: 消息 3101,级别 16,状态 1,行 1
    因为数据库正在使用,所以未能获得对数据库的排它访问权。
    服务器: 消息 3013,级别 16,状态 1,行 1
    RESTORE DATABASE 操作异常终止。
    我是在java代码里执行的请问要如何改?谢谢,非常感谢!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:29:501楼 得分:0
    exec('restore DATABASE educational from  disk ='''+@addr+'''')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:32:502楼 得分:71
    哦,看错了


    SQL code
    --关闭用户进程处理 declare @spid varchar(20) declare #spid cursor for select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname) open #spid fetch next from #spid into @spid while @@fetch_status=0 begin exec('kill '+@spid) fetch next from #spid into @spid end close #spid deallocate #spid
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:35:253楼 得分:1
    狙击就是厉害
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:35:284楼 得分:5
    restore 的语句前加:

    SQL code
    USE master


    如果还有用户连接, 试用2楼的 kill 用户进程处理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:36:515楼 得分:0
    楼上的 小弟看不懂 是要写存贮过程吗 怎么改 一点头绪都没有
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:38:056楼 得分:1
    同意狙击手的答案
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 11:35:307楼 得分:0
    大侠们, 我不会用....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • utpcb
    • 等级:
    发表于:2008-05-08 11:47:308楼 得分:3
    如果还有用户连接 kill 用户进程处理
    USE master
     
    declare @spid varchar(20)
        declare #spid cursor for
            select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
        open #spid
        fetch next from #spid into @spid
        while @@fetch_status=0
        begin 
            exec('kill '+@spid)
            fetch next from #spid into @spid
        end 
        close #spid
        deallocate #spid


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 11:53:239楼 得分:0
    必须声明变量 '@dbname'
    是库名吗?改成我的库名不可以啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • utpcb
    • 等级:
    发表于:2008-05-08 12:00:1310楼 得分:5
    @dbname这个是通用选项  对了要改为你的实例名字就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zarge
    • 等级:
    发表于:2008-05-08 12:03:3111楼 得分:5
    改成你的库名是这样
    SQL code
    db_id('educational')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 12:11:0612楼 得分:1
    收藏起来
    方便学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 12:27:5313楼 得分:0
    在查询分析器里可以了,多谢诸位!
    如果要用java的jdbc调用,上面的代码要怎么执行呢,写成存贮过程吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 12:46:4514楼 得分:1
    use master
    restore DATABASE educational from  disk = '"+addr+"'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 12:54:2015楼 得分:2
    引用 13 楼 kaihea 的回复:
    在查询分析器里可以了,多谢诸位!
    如果要用java的jdbc调用,上面的代码要怎么执行呢,写成存贮过程吗?


    JDBC中能直接执行的只有select\delete\insert\update、exec吧这样的话写成存储过程!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 12:59:4916楼 得分:1
    留名 接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lfhlyx
    • 等级:
    发表于:2008-05-08 13:08:3817楼 得分:1
    引用 16 楼 kk19840210 的回复:
    留名 接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 22:15:4418楼 得分:1
    引用 17 楼 lfhlyx 的回复:
    引用 16 楼 kk19840210 的回复:
    留名 接分 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzyyc
    • 等级:
    发表于:2008-05-09 11:23:4219楼 得分:0
    发现最近sql 注入比较多,拿出来共享下,时长2小时。一次上传不了,分三次上传。免费共享。     
    《sql server 数据库的备份与恢复》 
    微软特约资深讲师 毛颉 


    http://topic.csdn.net/u/20080509/11/70ac59bd-d219-45c7-85ec-9d355398642c.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 14:55:1220楼 得分:1
      路过,学习,接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 14:55:5521楼 得分:1
    关闭用户进程处理

    SQL code
    declare @spid varchar(20) declare #spid cursor for select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname) open #spid fetch next from #spid into @spid while @@fetch_status=0 begin exec('kill '+@spid) fetch next from #spid into @spid end close #spid deallocate #spid


    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved