mssql数据库,无法用语句实现“强制还原”功能

今天在做个小软件发现无法用语句实现MSSQL的“强制还原”功能,总是提示数据库正在使用中,(因为这个库打开过,它很长一段时间才会清除连接。虽然把1433端口封了),试了二个多小时无法解决。后来找到了这个老外写的存储过程解决了问题

Create Proc Sp_KillAllProcessInDB 

@DbName VarChar(100)

as
if db_id(@DbName= Null 
begin
Print 'DataBase dose not Exist'
end
else

Begin
Declare @spId Varchar(30)

DECLARE TmpCursor CURSOR FOR
Select 'Kill ' + convert(Varchar, spid) as spId
from master..SysProcesses
where db_Name(dbID) = @DbName
and spId <> @@SpId
and dbID <> 0
OPEN TmpCursor

FETCH NEXT FROM TmpCursor
INTO @spId 

WHILE @@FETCH_STATUS = 0

BEGIN

Exec (@spId)

FETCH NEXT FROM TmpCursor
INTO @spId 

END


CLOSE TmpCursor
DEALLOCATE TmpCursor

end 

GO
--To Execute
Exec dbo.Sp_KillAllProcessInDB 'DBname'
posted @ 2008-12-03 17:31  大力  阅读(976)  评论(1编辑  收藏  举报