CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何强行断开数据库的连接(在线等待 急)

楼主zjh527()2005-08-01 16:34:17 在 Delphi / 数据库相关 提问

如何强行断开本数据库的所有连接? 问题点数:50、回复次数:14Top

1 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-01 16:36:11 得分 0

ADO连接控件的active属性设置为false就可以了。  
  如:ADOConnection.active:=   false;Top

2 楼chenxuqian(aQ)回复于 2005-08-01 16:37:37 得分 0

关闭数据库连接Top

3 楼aladdin2006(回答问题不接分,不想要分,只为提高技术,解决问题)回复于 2005-08-01 16:40:37 得分 0

所有ADOQUERY   的CONNECT   指向一个   ADOCONNETION   将ADOCONNETION的CONNET   设为FALSE     就全部断开Top

4 楼zjh527()回复于 2005-08-01 16:45:14 得分 0

我只的是断开其他程序连接本数据库,因为我的数据库还有其他程序访问  
  有会的吗急呀Top

5 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-01 16:49:58 得分 0

那就把需要断开的ADOQuery或者ADOTable等的connectinon属性设置为空,把active属性设置为false;Top

6 楼hqhhh(枫叶)回复于 2005-08-01 16:51:56 得分 0

设置ADOConnection.active:=   false;即可!  
  Top

7 楼michaelsheyong(骷髅)回复于 2005-08-01 16:52:00 得分 30

procedure   ClearMSSQLUser(DBname   :   String);  
  var  
      SelectQuery   :   TAdoQuery;  
      ClearProUser   :   TAdoQuery;  
  begin  
      try  
          SelectQuery   :=TAdoQuery.Create(nil);  
          ClearProUser:=TAdoQuery.Create(nil);  
          SelectQuery.Connection   :=SqlConnection;  
          ClearProUser.Connection:=SqlConnection;  
          SelectQuery.SQL.Clear;  
          ClearProUser.SQL.Clear;  
          SelectQuery.SQL.Add('select   *   from   dbo.sysobjects   where   '+  
                                                  'id   =   object_id(N''[dbo].[p_killspid]'')   and   OBJECTPROPERTY(id,   N''IsProcedure'')   =   1');  
          SelectQuery.Open;  
          if   SelectQuery.Eof   then  
          begin  
              SqlCommand.CommandText:='create   proc   p_killspid   '   +  
                                                                '@dbname   sysname                 '   +  
                                                                'as     '+  
                                                                'declare   @s   nvarchar(1000)   '   +  
                                                                'declare   tb   cursor   local   for   '   +  
                                                                'select   s=''kill   ''+cast(spid   as   varchar)   '+  
                                                                'from   master..sysprocesses   '+  
                                                                'where   dbid=db_id(@dbname)   '+  
                                                                'open   tb   '+  
                                                                'fetch   next   from   tb   into   @s     '+  
                                                                'while   @@fetch_status=0       '+  
                                                                'begin     '+  
                                                                '     exec(@s)     '+  
                                                                '     fetch   next   from   tb   into   @s     '+  
                                                                'end   '+  
                                                                'close   tb   '+  
                                                                'deallocate   tb';  
              SqlCommand.Execute;  
          end;  
          SqlCommand.CommandText:='exec   p_killspid     '''+DBname+'''';  
          SqlCommand.Execute;  
      finally  
          freeandnil(SelectQuery);  
          freeandnil(ClearProUser);  
      end;  
  end;  
   
  给分Top

8 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-01 16:53:31 得分 0

你所谓的其他程序是指什么??????如果都是独立的程序(不共用一个ADOCONNECTION)。  
  你把需要断开的程序的ADOCONNECTION的CONNECTED属性设置为false就可以了。Top

9 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-01 16:55:53 得分 0

设置ADOConnection.active:=   false;即可!  
   
  TO:hqhhh(枫叶)    
   
  老兄,你怎么和我范同样的错误啊,都晕菜了。^_^Top

10 楼kevin_wzh(kevin)回复于 2005-08-01 16:58:50 得分 10

查看数据库里用户和进程的信息  
        sp_who  
   
      查看SQL   Server数据库里的活动用户和进程的信息  
        sp_who   'active'  
   
      查看SQL   Server数据库里的锁的情况  
        sp_lock  
         
        进程号1--50是SQL   Server系统内部用的,进程号大于50的才是用户的连接进程.  
   
        spid是进程编号,dbid是数据库编号,objid是数据对象编号  
   
        查看进程正在执行的SQL语句  
        dbcc   inputbuffer   ()  
                       
      推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句  
        sp_who3  
         
      检查死锁用sp_who_lock过程  
        sp_who_lock Top

11 楼kevin_wzh(kevin)回复于 2005-08-01 17:00:21 得分 0

上面是小弟为你找的:SQL   Server   管理常用的SQL  
   
  引用http://fengyu.china.com/sqlserver_dict.htmTop

12 楼kevin_wzh(kevin)回复于 2005-08-01 17:02:09 得分 0

spid是进程编号  
   
  要断掉连接用KILL   (spid编号),你可以看看,我以前写过。Top

13 楼cdsgajxlp(起名很难)回复于 2005-08-01 19:40:21 得分 10

http://community.csdn.net/Expert/topic/4036/4036814.xml?temp=.2705957Top

14 楼zjh527()回复于 2005-08-01 21:04:51 得分 0

谢谢,今天又会了一招Top

相关问题

  • 断开数据库连接
  • 数据库恢复时断开数据库的问题.急...在线等待
  • 这样连接的数据库,如何断开?
  • 怎样判断数据库连接已经断开(ADO)
  • 数据库断开后再连接的问题,急急急!!!
  • 数据库连接自动断开问题,请教高手!
  • Mysql数据库连接自动断开问题,请教高手!
  • 用ADO.NET访问数据库后连接为什么不断开??
  • 如何知道数据库连接断开?
  • 如何判断数据库长连接是否断开???

关键词

  • 数据库
  • 连接
  • 属性
  • sql
  • active
  • 用户
  • 断开
  • selectquery
  • clearprouser
  • 进程

得分解答快速导航

  • 帖主:zjh527
  • michaelsheyong
  • kevin_wzh
  • cdsgajxlp

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo