Huang

Huang

このデータベースは単一ユーザーモードであり、データベースを削除できないための処理です。

今日は、データベースを削除しようとしている際にエラーが発生し続けています。大意は次のとおりです:このデータベースはシングルユーザーモードで処理されており、接続中のため削除できません(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   '問題のデータベース名'

実行後、データベースを操作することができます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。