У меня есть запрос (около 1600 строк, хранящихся как хранимая процедура), выполнение которого занимает около 3 секунд (после его оптимизации путем добавления правильных индексов) при выполнении в среде SQL Server Management Studio.
Я написал для этого обертку на C # и предоставил себе возможность использовать URI для выполнения этого запроса. Однако это занимает более 30 секунд для выполнения, и из-за этого, когда я запускаю этот запрос как часть цикла, браузер останавливается из-за слишком большого количества ожидающих запросов. Я написал обертку так:
try
{
string ConString = Constants.connString;
using (con = new SqlConnection(ConString))
{
cmd = new SqlCommand(sql, con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
...
}
}
}
Моя строка подключения такова:
Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=true
Я знаю, что сам запрос хорош, потому что я запускал его несколько раз внутри SSMS, и он работал нормально (в среднем менее 5 секунд). И я был бы рад предоставить больше отладочной информации, за исключением того, что я не знаю, что предоставить.
С чего бы мне начать для устранения таких проблем?
РЕДАКТИРОВАТЬ:
Я запустил SQL Profiler и собрал некоторую статистику. Вот что я наблюдаю. Очень странно, что выполняется именно тот запрос. Дайте мне знать, если я могу что-то еще сделать на этом этапе.