2016-11-21 95 views
0

我在运行正常的mssql上有一个已经运行的存储过程。 3天前,在代码中运行相同的过程开始给我Timeout过期。试图检查底层表上是否有任何正在运行的进程,但似乎没有。检查了死锁情况,但没有。任何人都可以建议下一步做什么来解决这个问题?C#方法超时过期

下面的代码

public DataSet rptPaymentsByDateOptions(DateTime dateFrom, DateTime dateTo, string level, string sessionID, string degreeID, string programID, string jrnalSrce) 
    { 
     DataSet ds = new DataSet(); 
     Database db = DatabaseFactory.CreateDatabase(); 
     DbCommand cmdSem = db.GetStoredProcCommand("[iSchool].[rptCurrentSem]"); 
     DbCommand cmd = db.GetStoredProcCommand("[iFinance].[rptPaymentsByDateOptions]"); 
     db.AddInParameter(cmd, "DateFrom", DbType.Date, dateFrom); 
     db.AddInParameter(cmd, "DateTo", DbType.Date, dateTo); 
     db.AddInParameter(cmd, "Level", DbType.String, level); 
     db.AddInParameter(cmd, "SessionID", DbType.String, sessionID); 
     db.AddInParameter(cmd, "DegreeID", DbType.String, degreeID); 
     db.AddInParameter(cmd, "ProgramID", DbType.String, programID); 
     db.AddInParameter(cmd, "JrnalSrce", DbType.String, jrnalSrce); 
     db.LoadDataSet(cmdSem, ds, "rptCurrentSem"); 
     db.LoadDataSet(cmd, ds, "rptPaymentsByDateOptions"); //Timeout error here 
     return ds; 
    } 

如果我执行存储在Management Studio程序rptPaymentsDateOptions,它成功运行。

回答

1

可以增加超时

DbCommand.CommandTimeout Property

您还可以查看您的表和数据,看看是否有额外的索引可能加快查询。

+0

感谢@ChrisBint的反馈,我意识到分离和重新连接数据库解决了超时问题。这让我觉得有些东西阻止了它。然而,我会设置DbCommand.CommandTimeout属性,如果这应该重新发生。谢谢 – Tonto