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

 

问题来由:

在三丰物贸的项目中,有个关键的处理就是还原备份数据库 由于使用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都可以用!!

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

上一篇:存储过程将.txt.xls文件数据导入数据库表格


下一篇:Asp.Net页面请求性能大隐患 你是否做了这样的事情