如何断开数据库中正在使用的所有用户

本文介绍了SQL Server数据库管理的一些实用技巧,包括如何使数据库离线、创建存储过程来杀死特定数据库的所有进程、中断除自己之外的所有连接等。此外还提供了SQL Server的关闭方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。SQL2005中可以右键点击数据库名字/任务/脱机即可。 

2。

if  exists  (select  *  from  dbo.sysobjects  where  id  =  object_id(N'[dbo].[killspid]')  and  OBJECTPROPERTY(id,  N'IsProcedure')  =  1) 

   drop  procedure  [dbo].[p_killspid] 

  GO

use     master    

go  

create     proc     killspid     (@dbname     varchar(20))      

as      

begin      

declare     @sql     nvarchar(500),@temp   varchar(1000)  

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      

  set   @temp='kill     '+rtrim(@spid)  

  exec(@temp)  

fetch     next     from     getspid     into     @spid      

end      

close     getspid      

deallocate     getspid      

end      

 

--用法     

use     master      

exec     killspid     '数据库名'  

3。

--没必要停掉整个  sql   server  

  use   master  

  --ALTER   DATABASE   test   set   online    

  declare   @   varchar(200)  

  set   @   =   ''  

  select   @   =   @   +'   kill   '+   cast(spid   as   varchar)    

  from   master..sysprocesses    

  where   dbid=db_id('Test')  

  exec(@)  

  ALTER   DATABASE   test   set   offline

4。SHUTDOWN  
  立即停止   Microsoft®   SQL   Server™。  
   
  语法  
  SHUTDOWN   [   WITH   NOWAIT   ]  
   
  参数  
  WITH   NOWAIT  
   
  立即关闭   SQL   Server   而不在每个数据库内执行检查点。在尝试终止所有用户进程后退出   SQL   Server,并对每个活动事务执行回滚操作。  
   
  注释  
  除非   sysadmin   固定服务器角色成员指定   WITH   NOWAIT   选项,否则   SHUTDOWN   尝试关闭   SQL   Server   时的顺序方式为:    
   
  禁用登录(sysadmin   固定服务器角色成员除外)。若要查看所有当前用户的列表,请执行   sp_who。  
   
   
  等待当前正在执行的   Transact-SQL   语句或存储过程执行完毕。若要查看所有活动进程和锁的列表,请执行   sp_lock   和   sp_who。  
   
   
  在每个数据库内执行检查点。    
  当   sysadmin   固定服务器角色成员重新启动   SQL   Server   时,使用   SHUTDOWN   语句可以将需要做的自动恢复工作减到最小。  
   
  还可以使用下面这些工具和方法停止   SQL   Server。每个工具或方法都在所有数据库内执行检查点。从数据高速缓存中刷新所有提交的数据后,通过下列工具和方法停止服务器:    
   
  使用   SQL   Server   企业管理器。  
   
   
  在命令提示符下使用   net   stop   mssqlserver。  
   
   
  使用"控制面板"中的"服务"应用程序。  
   
   
  使用   SQL   Server   服务管理器。    
  如果是从命令提示符下启动的   sqlservr.exe,按   CTRL+C   键可关闭   SQL   Server。然而,按   CTRL+C   键将不执行检查点。  
   
   
   
  说明     通过   Server   企业管理器、net   stop、控制面板和   SQL   Server   服务管理器停止   SQL   Server   的方法所生成的服务控制消息与使用   SERVICE_CONTROL_STOP   停止   SQL   Server   所生成的相同。  
   
   
  权限  
  SHUTDOWN   权限默认授予   sysadmin   和   serveradmin   固定服务器角色的成员且不可转让。

5。

--中断除了自己外的连接。 

   

  declare   @sql   varchar(100)  

   

  while   1=1  

  begin  

   

  select   top   1   @sql   =   'kill   '+cast(spid   as   varchar(3))  

  from     master..sysprocesses      

  where   spid   >   50   and   spid   <>   @@spid    

   

  if   @@rowcount   =   0  

      break  

   

  exec(@sql)  

  end

备注:以上均未经过测试.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值