数据备份还原中排他锁问题的解决方案-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

数据备份还原中排他锁问题的解决方案

简介:

 

问题来由:

在三丰物贸的项目中,有个关键的处理就是还原备份数据库 由于使用JAVA来实现所以必须 运用SQL语句来解决

在备份还原数据库的时候竟然出现了问题:

在网上找了好久基本上是些没用的东西!!

还好CSDN上问了专家!一下OK!

我的操作如下:

 

1SQL 语句备份数据库:

 

BACK DATABASE inOutSell

TO DISK = 'D:/mydatabase.bak'

WITH FORMAT,

NAME = 'FULL BACK OF inOutSell'

go

 

描述:将数据库inOutSell数据库备份为D盘目录下mydatabase.bak文件

 

 

2SQL 语句还原数据库:

 

 

USE inOutSell

RESTORE DATABASE inOutSell

FROM DISK = 'D:/mydatabase.bak'

WITH REPLACE

GO

描述:

将inOutSell数据库还原还原的文件在为D盘目录下的mydatabase.bak文件

 

 

 

 

3:出现这个问题是,怎么回事?

表示数据库正在使用,未能获得对数据库的排它访问权。怎么解决?

 

4:查看手册没有找到合适的:

5:上google查没有结果!!太杂了

=======================================

6: 上CSDN上面问:10分钟解决!爽

方式1:

 

  create      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      

   end      

   

   --用法      

   use      master      

   exec      killspid      '数据库名'   

 

=======================================

方式2:

 

CREATE PROC KillSpid(@DBName varchar)

AS BEGIN

DECLARE @SQL varchar

DECLARE   @SPID int

SET @SQL = 'DECLARE CurrentID CURSOR FOR

SELECT spid from sysprocess where dbid = db_id('''+@DBName+''')'

fetch next from CurrentID INTO @SPID

while @@FETCH_STATUS <> -1

BEGIN

exec('KILL '+@SPID)

FETCH NEXT FROM   CurrentID INTO @SPID

END

CLOSE CurrentID

DEALLOCATE CurrentID

END

=======================================

 

 

方案1 、2都可以用!!

希望整理出来的文章对大家有用!!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章