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

为什么数据库表打不开,如何判断表被锁住?在线等待......

楼主wrd001()2003-09-02 12:49:58 在 MS-SQL Server / 应用实例 提问

我写的定时采集程序(定时写更新数据表)运行一段时间后自动停止。此时系统资源充足。  
  这表只有一条记录600个字段,采集程序隔5秒跟新一次。但是客户端打不开表。请问各位是什么原因。如果是表被锁住,如何解开锁? 问题点数:0、回复次数:7Top

1 楼tj_dns(愉快的登山者)回复于 2003-09-02 13:20:26 得分 0

设定锁超时:  
  SET   LOCK_TIMEOUT   1800  
   
  显示连接数据库的命令和进程号:  
  select   B.name,   A.cmd,   A.spid   from   master..sysprocesses   A    
  left   join   master..sysdatabases   B   on   A.dbid   =   B.dbid  
  where   B.name   =   'dbname'  
   
  杀掉连接的进程,释放数据库:  
  kill   spidTop

2 楼jiandanyu(简单)回复于 2003-09-02 13:35:09 得分 0

可以试一下从查询分析器中是否能打开。  
  如果是表被锁住,打开企业管理器--管理--当前活动--锁\对象  
  找到锁表的进程,右击属性--取消进程Top

3 楼wrd001()回复于 2003-09-02 14:02:47 得分 0

谢谢上面两位朋友的关注。一定给分  
  当采集程序停止后,表在分析器中也打不开。  
  再请问:我如何在程序判断是那个进程锁住表,并将它快KILL。程序要保证连续运行。  
  Top

4 楼nboys()回复于 2003-09-02 14:05:22 得分 0

create   proc   p_name    
  @databaseName   varchar(100)  
  as  
  declare   @spid   int,@sql   varchar(4000)  
  set   @sql='declare   c_name   cursor   scroll   local   for   select   spid   from   master..sysprocesses   where   dbid=db_id('''+@databaseName+''')'  
  exec(@sql)  
  open   c_name  
  fetch   next   from   c_name   into   @spid  
  while   @@fetch_status<>-1  
  begin  
  kill   @spid  
  fetch   next   from   c_name   into   @spid  
  end    
  close   c_name  
  deallocate   c_name  
  go  
   
  执行:   exec   p_name   'databaseName'Top

5 楼wrd001()回复于 2003-09-02 14:21:30 得分 0

nboys:  
        你好,你上面的过程执行时提示错误。我找不到原因,帮我看看。谢谢了Top

6 楼wrd001()回复于 2003-09-02 14:28:42 得分 0

nboys:  
        执行上面过程时,提示c_name   不存在,为什么?Top

7 楼zarge(鲨去来兮)回复于 2003-09-03 02:51:34 得分 0

try    
   
  create   proc   p_name    
  @databaseName   varchar(100)  
  as  
  declare   @spid   int,@sql   varchar(4000)  
  declare   c_name   cursor   scroll   local   for   select   spid   from   master..sysprocesses   where   dbid   =   db_id(@databaseName)  
  open   c_name  
  fetch   next   from   c_name   into   @spid  
  while   @@fetch_status<>-1  
  begin  
  kill   @spid  
  fetch   next   from   c_name   into   @spid  
  end    
  close   c_name  
  deallocate   c_name  
  go  
  Top

相关问题

  • 判断数据库类型??
  • 怎么在VB里判断一个数据库中是否存在某一个已知的表???在线等待!!!
  • 如何判断连接服务器的sql数据库成功与否?在线等待高手解答!
  • 在线等待:如何在Access用C#语句数据库中判断表是否已存在和创建表?
  • 数据库连接判断(100分)
  • 数据库中空值的判断。
  • 如何判断已到数据库底?
  • 判断数据库是否打开
  • 数据库判断空值问题
  • 急,在线等待 SQL Server2000 数据库倒入Access数据库!!!

关键词

  • 数据库
  • sql
  • 锁住
  • spid
  • databasename
  • 进程
  • sysprocesses
  • 程序
  • dbid
  • 表

得分解答快速导航

  • 帖主:wrd001

相关链接

  • SQL Server类图书

广告也精彩

反馈

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