c# 在SQL Server 2008中调用存储过程时超时



sql-server stored-procedures (4)

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

您需要提出一个关于加速您的过程,发布表格以及存储过程代码的问题,以便能够一劳永逸地解决问题。

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

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

我怎样才能配置超时? 在服务器上或在我的C#客户端?

谢谢


Answer #1
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();
    }
}

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

Answer #3

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

您可以使用SQL Management Studio来查找所需的索引,为存储过程选择sql代码,右键单击并选择“Display Estimated Execution Plan”(显示估计执行计划)作为建议的索引。 这应该优化您的存储过程。





timeout