۱ مطلب با کلمهی کلیدی «SqlCommand.CommandTimeout» ثبت شده است
تغییر دادن مقدار Timeout در SqlCommand
بسم الله الرحمن الرحیم
در بعضی اگر شما بخواهید یک دستور اسکیوال را از طریق سی شارپ فراخوانی کنید که مدت زمان اجرای آن دستور بسیار طولانی باشد با خطای زیر مواجه می شوید:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated
برای حل این مشکل شما باید مدت زمان Timeout را در SQL Command افزایش دهید و یا این پارامتر را غیر فعال کنید.
به صورت پیش فرض مدت زمان CommandTimeout در SqlCommand برابر با 30 ثانیه می باشد که شما می توانید به صورت زیر آن را تغییر دهید
SqlCommand sqlCommand= new SqlCommand("select * from table_EduOnline");
SqlCommand.CommandTimeout = 100;//100 secound
و یا با مساوی قرار دادن CommandTimeout برار با 0 آن را غیر فعال کنید
SqlCommand.CommandTimeout = 0;// disable
با استفاده از دستور Delay می توانید این خاصیت را تست کنید، مثال:
static void Main(string[] args)
{
string cString = @"Data source=<your server>;Integrated Security=SSPI;Initial Catalog=Northwind";
using (SqlConnection sc = new SqlConnection(cString))
{
try
{
SqlCommand cmd = new SqlCommand("waitfor delay '00:00:30';select * from Shippers", sc);
cmd.CommandTimeout = 10;
Console.WriteLine("CommandTimeout: {0}", cmd.CommandTimeout);
sc.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
Console.WriteLine("{0} : {1}", r[0].ToString(), r[1].ToString());
sc.Close();
}
catch (SqlException se)
{
Console.WriteLine(se);
}
}
}