Huang

Huang

此数据库处于单用户模式,导致数据库无法删除的处理

今天在删除一个数据库时,一直报错,大意是:此数据库处理单用户模式,尚在连接当中,无法删除(既使将 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   '出问题的数据库名'

执行完就能对数据库进行操作了。

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.