2017-06-10 49 views
0

場景:存儲過程終止從程序執行時

我對學生的座位分配一個存儲過程,並有超過8000級的學生使用這個存儲過程進行分配,並且工作正常時,我正在從SQL Server 2014執行它。

但是,當我從.net程序調用相同的存儲過程時,它正在執行中止。我的存儲過程包含超過500行,所以我沒有把它的代碼放在這裏。但是.NET代碼如下:

protected void btnAllotment_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     DataClassesAdmission2015DataContext dc = new DataClassesAdmission2015DataContext(); 
     dc.Allotment(ChkReshuffle.Checked, ddlCriteria.SelectedItem.Text, ddlRound.SelectedItem.Text,null); 
     Response.Write("<script>alert('Allotment is done Successfully')</script>"); 
     dc.Connection.Close(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write("<script>alert('Error at Alloment <br>" + ex.ToString() + "')</script>");  
    } 
} 

注:我沒有得到這裏的任何錯誤,但在後臺存儲過程終止。所以如果任何人有任何建議或解決方案,請讓我知道。

+0

您提供了很少的細節,以便我們找到問題。你確定你的程序正在做/打開連接嗎?這個「用戶」(您的代碼運行在哪個身份驗證用戶身上)是否真正經過身份驗證才能執行StoredProcedure? –

+0

既然你說「......終止在執行中......」,它可能與SQL的連接超時或甚至SQL的Query-Timeout設置有關...... –

+0

是的,沒有與連接有關的問題或它也適用於500多名學生,但在此之後被認定爲不帶任何錯誤 –

回答

0

我使用CommandTimeout屬性解決了它。實際上,當我從dc對象調用存儲過程時,大約需要15分鐘才能完成任務。那是因爲我無法追蹤它,因爲默認CommandTimeout是30秒,因爲MSDN

using(DataClassesAdmission2015DataContext dc = new DataClassesAdmission2015DataContext()) 
{ 
    dc.CommandTimeout = 60*60; 
    dc.Allotment(ChkReshuffle.Checked, ddlCriteria.SelectedItem.Text, ddlRound.SelectedItem.Text, null); 
} 

現在它爲我工作。