超时在dataaccesslayer中执行过程时过期

时间:2014-03-12 12:29:00

标签: asp.net sql-server-2008

当我尝试执行插入过程时,我在数据访问层中调整以下内容。时间已过期。操作完成之前经过的超时时间或服务器没有响应。 Plaese给我一个解决方案

1 个答案:

答案 0 :(得分:0)

虽然你可能有一个非常长的INSERT语句需要花费几秒钟才能执行,但似乎更有可能(特别是当你尝试增加timeout属性时)是某些其他事务锁定了你的表试图插入。

有几种方法可以解决这种情况。如果通常不会发生这种情况,请调查其他人是否可以锁定该表。它可能就像另一个开发人员在他或她去吃午餐时在断点处停止打开调试会话一样简单。

如果一次又一次地发生这种情况,每次你跑步,并且桌面上没有你可以检测到的锁定,你可能会在运行时与自己发生冲突:打开事务,更改某些内容,并且在事务仍处于打开状态时,对同一数据库执行新命令,影响受事务影响的其中一个表。

如果是这样的话,你可以做一些事情:重新设计你如何进行这个两步过程,这样你一次只需要打开一个连接,或者尝试两者兼顾同一交易中的活动。

另外,请确保使用SqlConnection,SqlTransaction和SqlDataReader对象进行适当的内务管理:尽快关闭或处理它们。如果您不熟悉,可以查看C#using语句。