从带有EF的C#,我用ExecuteStoreCommand调用一个长存储过程

程序启动30秒后,我有一个超时异常。

如何配置超时? 在服务器上还是在我的C#客户端?

谢谢

===============>>#1 票数:16 已采纳

您可以在底层连接上设置CommandTimeout,但是一个更好,更好,更好的想法是花费时间和精力来诊断超时发生的原因。

即使您通过增加CommandTimeout来“解决”问题,也可能会导致数据库中出现其他阻塞问题。 寻找阻塞查询或糟糕的查询计划,或者设计糟糕的表和索引。

===============>>#2 票数:4

        using (var context = new MyDbEntities())
        {
            context.CommandTimeout = 600;
            context.MyLongRunningStoredProc();
        }

===============>>#3 票数:3

using (var conn = new SqlConnection(ConnectionStrings.toMyDB))
{
    conn.Open();
    using (var cmd = new SqlCommand("myProc", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandTimeout = 30; // Increase this to allow the proc longer to run
        cmd.Parameters.AddWithValue("@Param", myParam);
        cmd.ExecuteNonQuery();
    }
}

===============>>#4 票数:1

除了在存储过程中修复SQL之外,您所做的任何事情都只是掩盖了真正的问题(SQL)。

您需要询问有关加快程序,发布表格的位置以及存储过程代码的问题,以便可以一劳永逸地修复它。

===============>>#5 票数:0

使用索引解决了我的问题,我发现使用ExecuteStoreCommand执行存储过程的时间与SQL中的不同。

您可以使用SQL Management Studio查找所需的索引,选择存储过程的sql代码,右键单击“显示估计执行计划”,然后选择建议的索引。 这应该优化您的存储过程。

  ask by Patrice Pezillier translate from so

未解决问题?本站智能推荐:

8回复

存储过程间歇性地超时!

我有许多存储过程,我使用ExecuteNonQuery从代码调用。 这一切都很好但是我的存储过程中有2个在今天间歇性地开始计时: 超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。 如果我从管理工作室手动执行sp,它仍然很好。 我的数据库
5回复

MIN和MAX功能导致存储过程性能下降

我在Production中有一个数据库表,用于存储给定项目的workflow ; 该表的每个记录基本上代表了特定日期的项目状态。 过于简化的表结构是这样的: 工作流程表 因此,在2012-01-01项目Foo1已经达到状态01; 在2012-04-01达到状态03 ,依此
4回复

SQL查询得到很多超时

我有一个很大的数据库表(SQL Server 2008),其中存储了我所有的论坛消息(该表当前有超过450万个条目)。 这是表模式: 我看到不断回过头来的一个问题是,当我运行选择消息及其所有回复的存储过程时,我有时会从SQL Server中收到超时错误。 这是我的存储过程:
3回复

.NET代码中的SP超时,不在Management Studio中

如果我在Management Studio(SQL Server 2008)中运行以下命令: 我不到一秒钟就得到了结果 但是我这样在VB.Net中运行它: 它超时(我知道ExecuteNonQuery不会返回数据,但是我试图使代码尽可能地小)。 我在代码中使用了与Ma
2回复

存储过程和SqlCommand超时

如果我使用SqlCommand运行存储过程并且SqlCommand超时,StoredProc会继续执行还是在SqlCommand断开连接时强行退出?
2回复

当我在C#中从SQL Server调用存储过程时发生转换错误

我有一个名为lastID的存储过程,如下所示: 此存储过程返回表工作订单中的最后一个id,现在我正尝试在C#中执行此过程,这是代码: 我不知道我的代码有什么问题,因为显示了异常,这说 将varchar值'OT- 003-16'转换为数据类型int时转换失败
3回复

如何从SQL Server中的存储过程中获取数据

我从存储过程读取数据。 当我插入一个断点时,我会遇到这种情况: 存储过程返回一行8列。 您可以在图片上看到它。 但是,当我尝试读取一个值时: 我有这个例外: 没有数据时,尝试读取无效。 我的模特: 有人可以帮我吗?
1回复

在我自己的SQL Server数据库中创建存储过程[重复]

这个问题已经在这里有了答案: 通过C#创建存储过程 4个答案 我正在开发一个不能远程访问其SQL Server的网站。 当我尝试在自己的数据库中创建新过程时,遇到了以下错误: CREATE / ALTER PROCEDURE必须是查询批处理中的第一条语句
2回复

使用存储过程在SQL Server中插入多语言

我需要在SQL Server 2005中插入泰米尔语。我尝试使用Insert或Update查询,它工作正常。 在进入存储过程时,我不知道如何传递参数。 如果执行此操作,它将被插入为?????。 如果我执行此操作,它将被正确插入..但是我不知道如何从我的C#应用​​程序中传递“
2回复

不要在SQL Server存储过程中强制四舍五入

我的存储过程有问题。 在C#中,我具有以下变量: 在存储过程中,我有以下代码: #tmp表具有以下结构: 当我将变量ART12的值发送到存储过程时,这将自动舍入。 如果值为10547,42,则代码返回10547,00。 但是我需要10547,42! 有什么