增加LINQ to SQL存储过程调用的超时

Rog*_*mbe 3 linq-to-sql

我通过Linq-to-SQL调用存储过程.此存储过程只处理我已插入另一个表的数据.在大型数据集上,我收到超时异常:

"Timeout expired. The timeout period elapsed prior to completion of the operation
 or the server is not responding."
Run Code Online (Sandbox Code Playgroud)

我无法做任何事情来加速存储过程 - 它只是将数据从一个表移动到另一个表.我并不特别想增加数据库连接字符串中的超时 - 这是唯一需要很长时间的事情.

这不是一个网络应用程序; 从普通Windows服务中的后台线程调用存储过程.后台线程由WCF调用启动,客户端定期轮询后台线程的结果.

不幸的是,存储过程花费的时间太长,并且GetDataContext().spRunStoredProcedure()调用抛出一个TimeoutException,即使存储过程看起来运行正常.

我可以为此存储过程调用增加超时吗?或者有没有办法让存储过程返回"我还没死",以防止连接超时?

bka*_*aid 13

在DataContext上,将.CommandTimeout属性设置为更高的秒值.SQL Server 的默认值为30秒,您可以将其设置为0以使其不超时.