【问题标题】:Timeout implementation for sql stored procedure and C#sql存储过程和C#的超时实现
【发布时间】:2018-02-07 15:45:14
【问题描述】:

我正在尝试为数据库存储过程实现超时功能。 此超时值将从 app.config 中获取。

我正在使用存储过程处理数千条记录。当我再次调用我的主程序时,会在里面调用更多的存储程序。一切都已使用 C# transactionScope 进行了包装。 我在 C# 中有一个列表,它将获取单个记录进行处理并命中主存储过程。

我想在超时值匹配后立即停止此处理。我的意思是如果超时为 20,那么我的处理应该执行 20 秒,它应该在 20 秒后停止处理。

我尝试使用adoCommand.CommandTimeoutproperty,但不幸的是它根本没有停止。

请帮忙。

【问题讨论】:

  • 鉴于问题似乎与CommandTimeout 的预期行为无关,您能否发布相关代码,包括创建命令、设置CommandTimeout 属性和执行命令?虽然可以想象存在一些未记录的行为,但更有可能是设置不正确。

标签: c# sql stored-procedures


【解决方案1】:

不看代码有点难以判断出了什么问题。

来自CommandTimeout上的文档:

值 0 表示没有限制(尝试执行命令将无限期等待)。

在 BeginExecuteReader 等异步方法调用期间,CommandTimeout 属性将被忽略。

CommandTimeout 在针对上下文连接(在连接字符串中使用“context connection=true”打开的 SqlConnection)执行命令时无效。

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2010-09-06
    • 2020-04-18
    • 2014-04-14
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2012-04-27
    • 2019-04-22
    相关资源
    最近更新 更多