2010-10-27 57 views

回答

16

你可以在下面的连接上设置的CommandTimeout,而是很多很多,好多想法是花时间和精力来诊断为什么超时在首位发生。

即使你通过你的正在增加的CommandTimeout“解决”的问题,你可能在你的数据库引起其他阻塞问题。寻找阻止查询或糟糕的查询计划,或设计糟糕的表和索引。

1

什么你做什么,比在存储过程中固定SQL对方只是掩盖了真正的问题(在SQL)。

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

+1

我知道,但100万点的插入,我别无选择...... – 2010-10-27 13:38:37

+4

那将是摆在原来的职位非常重要的信息,你不觉得? – 2010-10-27 14:02:05

+1

来自单个存储过程调用的1百万次插入?这是怎么回事? – 2010-10-27 15:52:30

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(); 
    } 
} 
+0

帕特里斯Pezillier被询问超时在EF,你的例子是ADO.NET – 2011-06-27 16:09:57

+0

我怎么能结果传递到DataSet?我现在正在使用这项技术。 – 2017-11-10 18:33:00

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

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

可以使用SQL Management Studio中,以便找到你需要的指数,选择您的存储过程的SQL代码,右击“显示估计的执行计划”采取建议的指数。这应该优化您的存储过程。