今天在刪除一個資料庫時,一直報錯,大意是:此資料庫處理單使用者模式,尚在連接當中,無法刪除(即使將 SQLServer 停止後再啟動也是如此)
百度之後找到了解決辦法,備份於此:
USE [master]
GO
/****** Object: StoredProcedure [dbo].[killspid] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--建一個儲存過程,斷開所有使用者連接。
create proc [dbo].[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
GO
先在 master 中創建一個儲存過程,用於幹掉所有連接,然後調用
use master
exec killspid '出問題的資料庫名'
執行完就能對資料庫進行操作了。