在作业中,自动执行恢愎操作,报错排他
1> 2> 3> 消息 3101,级别 16,状态 1,服务器 XUHUI\GPRS,行 1
因为数据库正在使用,所以未能获得对数据库的排它访问权。
消息 3013,级别 16,状态 1,服务器 XUHUI\GPRS,行 1
RESTORE DATABASE 操作异常终止。
消息 3101,级别 16,状态 1,服务器 XUHUI\GPRS,行 2
因为数据库正在使用,所以未能获得对数据库的排它访问权。
消息 3013,级别 16,状态 1,服务器 XUHUI\GPRS,行 2
RESTORE DATABASE 操作异常终止。
NULL
我在网上查,exec p_killspid 'gprs0719'这样杀死所有的连接就可以
exec p_killspid 'gprs0719'
restore database gprs0719 from disk='E:\测试采集\gprs0719\gprs071920100906160001.bak' with norecovery,replace
restore database gprs0719 with recovery
这样执行没问题
但用第一步:exec p_killspid 'gprs0719'
第二步:exec master..xp_cmdshell 'osql -S XUHUI\GPRS -U sa -P 123 -i e:\recover.sql'
就报错
放到作业里,也不执行
过程如下
create proc p_killspid
@dbname sysname --要关闭进程的数据库名
as
declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..sysprocesses
where dbid=db_id(@dbname)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
GO