问题描述:
我有一个数据库叫做inOutSell
已经备份到D:\mydatabase.bak
现在的情况是我要用sql语句进行还原
语句如下:
USE inOutSell
RESTORE DATABASE inOutSell
FROM DISK = 'D:\mydatabase.bak'
WITH REPLACE
GO
可是出现了如下的问题
查询分析器报告如下:
服务器: 消息 3101,级别 16,状态 1,行 2
因为数据库正在使用,所以未能获得对数据库的排它访问权。
服务器: 消息 3013,级别 16,状态 1,行 2
RESTORE DATABASE 操作异常终止。
现在求解决方案 要求运用sql语句
createproc killspid (@dbname varchar(20))
as
begin
declare@sql nvarchar(500)
declare@spidint
set@sql='declaregetspidcursorfor
selectspidfromsysprocesseswheredbid=db_id('''+@dbname+''')'
exec(@sql)
open getspid
fetchnext from getspid into @spid
while@@fetch_status <>-1
begin
exec('kill'+@spid)
fetch nextfromgetspid into @spid
end
closegetspid
deallocategetspid
end
--用法
usemaster
execkillspid'数据库名'