引起超时的原因及表解锁的方法<转>

 [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://www.cnblogs.com/xuezhizhang/archive/2010/05/21/1741061.html

posted @   温景良(Jason)  Views(591)  Comments(1Edit  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示