2015-09-24 57 views
0

我運行一個存儲過程,但在運行它顯示像超時已過期。操作完成或服務器之前經過的超時時間沒有響應。」

超時已過期。超時時間誤差之前完成經過操作或服務器沒有響應。

我已經把我的web配置像

<add name="SAMPLECONNECTION" connectionString="Data Source=ADMIN\SQLEXPRESS;Initial Catalog=PFGRT;Persist Security Info=True;MultipleActiveResultSets=true;User ID=sa;connect Timeout =1000000;Password=PASSWORD" 
    providerName="System.Data.SqlClient" /> 

我試着像設置connect Timeout = 0;也,但我得到同樣的錯誤。

我該如何解決?

我的存儲過程調用的類

public DataSet adFeedBackReportFacultyWise(string SetID, string FacultyID, string SubjectID,string groupid) 
{ 
    DbUtil du = new DbUtil(); 
    Dictionary<string, SqlParameter> cmdParameters = new Dictionary<string, SqlParameter>(); 
    cmdParameters["SetID"] = new SqlParameter("SetID", SetID); 
    cmdParameters["FacultyID"] = new SqlParameter("FacultyID", FacultyID); 
    cmdParameters["SubjectID"] = new SqlParameter("SubjectID", SubjectID); 
    cmdParameters["groupid"] = new SqlParameter("groupid", groupid); 

    return du.ExecuteQuery("adFeedBackReportFacultyWise", cmdParameters); 
} 

我DButil類是

public class DbUtil 
{ 
    string connection = ConfigurationManager.ConnectionStrings["gatikkcmsConnectionString"].ConnectionString; 

    public SqlDataAdapter ad; 
    public DataTable dt = new DataTable(); 
    SqlConnection conn; 
    SqlCommand cmd = new SqlCommand(); 
    public DbUtil() 
    { 
     conn = new SqlConnection(ConfigurationManager.ConnectionStrings["gatikkcmsConnectionString"].ConnectionString); 
     cmd = null; 
    } 

    public SqlConnection getConnection() 
    { 
     return new SqlConnection(connection); 
    } 
    public int ExecuteCommand(string storedProcName, Dictionary<string, SqlParameter> procParameter) 
    { 
     int rc; 
     using (SqlConnection cn = getConnection()) 
     { 
      cn.Open(); 
      // create a SQL command to execute the stored procedure 
      using (SqlCommand cmd = cn.CreateCommand()) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.CommandText = storedProcName; 
       // assign parameters passed in to the command 
       foreach (var procParameters in procParameter) 
       { 
        cmd.Parameters.Add(procParameters.Value); 
       } 
       rc = cmd.ExecuteNonQuery(); 
      } 
      cn.Close(); 
     } 
     return rc; 
    } 
} 
+0

使用應用程序塊嗎? – Webruster

+0

「連接超時」與「命令超時」不同。前者可以在連接字符串中設置,但後者需要以編程方式應用於正在執行的命令。也就是說,我認爲默認值是30秒 - 這個過程需要多長時間才能運行? –

+0

增加'Connection Timeout'。默認情況下是30秒。您可以爲其分配自己的值。 – Webruster

回答

2

的問題不是連接超時(建立到數據庫服務器的連接所用的時間),但而不是命令超時(執行命令所需的時間)。

在你DbUtil類,設置對像這樣的命令超時:

using (SqlCommand cmd = cn.CreateCommand()) 
{ 
    cmd.CommandTimeout = 120; //set timeout - use appropriate value 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = storedProcName; 
    // assign parameters passed in to the command 
    foreach (var procParameters in procParameter) 
    { 
     cmd.Parameters.Add(procParameters.Value); 
    } 
    rc = cmd.ExecuteNonQuery(); 
} 

這將是值得的檢查存儲過程的表現也是如此。

+0

,讓我試試一次:) –

0

由於您正在面臨一個命令,所以您需要增加您的笛子sql command。你可以在你的命令中這樣指定它

// Setting command timeout to 2 minutes 
cmd.CommandTimeout = 120; 
相關問題