问题描述:
我有一个数据库叫做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语句
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 '数据库名'