今日は、データベースを削除しようとしている際にエラーが発生し続けています。大意は次のとおりです:このデータベースはシングルユーザーモードで処理されており、接続中のため削除できません(SQLServer を停止して再起動しても同様です)。
調べた結果、解決策を見つけました。以下にバックアップします:
USE [master]
GO
/****** オブジェクト: ストアドプロシージャ [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 '問題のデータベース名'
実行後、データベースを操作することができます。