use master
go
--判断 p_killspid 存储过程是否存在
--object_id(N'[dbo].[p_killspid]') 功能是获得p_killspid 的ID编号
--OBJECTPROPERTY(id,N'IsProcedure') 找出是存储过程的对象
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_killspid]
GO
create proc p_killspid
@dbname sysname --要关闭进程的数据库名
as
declare @s nvarchar(1000)
--查询指定数据库的启动进程
-- kill 进程名 :功能是封杀指定进程
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
RESTORE DATABASE @dbname
FROM DISK = N'E:/本地测试/默认数据库测试存放点/backhome/server2_ehome2_Userhome'
WITH FILE = 1, NOUNLOAD, STATS = 10
go
--用法:
use master
go
exec p_killspid 'eHome2_UserHome'
go
use eHome2_UserHome
go