zoukankan      html  css  js  c++  java
  • 表解锁的方法

    [Sql Server]超时时间已到。在操作完成之前超时时间已过或服务器未响应。

    原因分析:

    1.如果用到了事务处理

       在事务开始BeginTransaction()与事务结束transaction.Commit()中间用到了没有启动事务的过程,如其他查询等,会提示此错误。另外一种情况就是没有正确的使用事务导致表被锁定,此时也会引起超时。

    2.ADO.NET的使用引发的问题

       connection未及时关闭也会引发超时的问题。另外就是Command命令执行超时,此时根据需要可以修改command.CommandTimeout的时间,默认时间为30秒。

    3.Web页面执行超时,如上传大批量的文件

       需要修改配置文件:

    <system.web> 

    <httpRuntime maxRequestLength="102400" executionTimeout="720" />

    </system.web>

     

    表解锁的方法:
    select id from sysobjects where  name='TableName' --查询表名为TableName的表的id

    exec  sp_lock --执行该存储过程得到所有锁定的表的信息,根据前一步中查到的id可找到spid信息即进程ID

    kill spid --解锁,例如kill 70 就是关闭进程id为70的锁定表的进程

    以上是表解锁的方法,根本的解决方法还是得找出引起表被锁定的原因。我遇到的情况是未正确使用事务引起的。

    另外,在未解锁的情况下可以使with (nolock)来执行SQL,例如select username from User with (nolock) where userid=101 。

     

    参考:http://blog.csdn.net/Tonyzhou2008/archive/2009/12/18/5031823.aspx

    http://blog.csdn.net/duanqingfeng/archive/2009/03/30/4036600.aspx

  • 相关阅读:
    jstack 命令
    jmap 命令
    jinfo 命令
    jstat 命令
    jps 命令
    java虚拟机内存区域详解
    chgrp 命令
    chown 命令
    java自定义注解
    Mysql中key 、primary key 、unique key 与index区别
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2035970.html
Copyright © 2011-2022 走看看