Как увеличить время запроса? - PullRequest
0 голосов
/ 09 мая 2011

Есть ли возможность увеличить время ожидания выполнения запроса в программе с использованием C # .NET, Windows Forms?

В моей программе я выполняю запрос в цикле.На первых двух итерациях запрос выполняется каждый раз по 10 секунд.На третьей итерации для выполнения запроса требуется около 40-50 секунд, и теперь я не могу извлечь данные из этого запроса, поскольку возникает исключение тайм-аута и поток выполнения переходит в блок catch, где соответствующийотображается сообщение об ошибке.

Существует ли возможность выполнения запросов, которые занимают более 30 секунд, с использованием C # .NET в приложении Windows?

Ниже приведен мой код:

try
{
    tab = "dbo.basic_sp_mst";
    error1 = "" + site + "." + orgname + "";
    ls = "" + site + "." + site + "." + tab + "";
    SqlDataAdapter da2 = new SqlDataAdapter("select * from " + ls + " where (last_updated_date between(getdate()-3) and (getdate()-1)) order by last_updated_date,bsp_item_cd", con);
    DataSet ds2 = new DataSet();
    da2.Fill(dt5);
    dt6 = dt5;

    SqlDataAdapter daa = new SqlDataAdapter("select a. bsp_item_cd ,a.bsp_mrp,a.last_updated_date,b.bsp_item_cd ,b.bsp_mrp,b.last_updated_date,c.name from basic_sp_mst a," + ls + " b,sys.servers c where  a.bsp_item_cd =  b.bsp_item_cd and a.bsp_mrp<> b.bsp_mrp and a.bsp_org_cd=" + s + " and c.name<>'001' and c.name='" + site + "'", con);......................(this is the main query) if this query is taking more than 30sec it is going to catch block.......

    DataSet dss = new DataSet();
    daa.Fill(dt7);
    dt8 = dt7;
}
catch (Exception ex)
{
    msg2 = " query time out error at store id:" + error1 + "";
    dataGridView8.Rows.Add(msg2);
}

1 Ответ

0 голосов
/ 09 мая 2011

Просто увеличьте свойство CommandTimeout SqlDataAdapter.

// Set timeout to 2 minutes
daa.SelectCommand.CommandTimeout=120;

Эта команда идет после определения new SqlDataAdapter и перед вызовом Fill.

Также проверьте, если таблицаиметь индексы для столбцов в разделе Where команды Select, чтобы попытаться сократить время запроса.

Вы также можете использовать MS SQL Server Profiler для получения рекомендаций по индексам, которые могут повысить производительность.

...