2016-11-16 5 views
0

У меня есть SqlDataAdapter, который заполняется 33k строками данных (около 15 столбцов). При выполнении запроса в MS SSMS я получаю свои строки примерно за 5 секунд. При использовании моего кода, я получаю тайм-аут, даже установив параметр времени ожидания до 120 сек:SqlDataAdapter.fill таймаут, запрос менее 5 секунд

private static DataTable getResult(string query, int someId, SqlConnection myConn) 
    { 
     SqlCommand myCmd = new SqlCommand(query, myConn); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 

     myCmd.Parameters.Add("@someId", SqlDbType.Int); 
     myCmd.Parameters["@someId"].Value = someId; 
     da.SelectCommand = myCmd; 
     da.SelectCommand.CommandTimeout = 120; 
     da.Fill(dt); 

     return dt; 
    } 

Я уже пытался советы от веб-сайтов, таких как получение все большего числа соединений, а также значения таймаута без результата к этот день ...

Любые идеи о том, как избежать ошибки таймаута?

Спасибо за понимание.

+0

Вы уверены, что вы работаете один и тот же запрос в SSMS, как и в методе GetResult? Также является ли ваша строка строки входа одинаковой? Вы пытались просто выполнить команду, чтобы увидеть результаты, прежде чем пытаться поместить их в DataTable? – xszaboj

+0

Попробуйте выполнить запрос в новом окне MS SSMS. Если вы запустили запрос несколько раз в одном окне, он будет выполнять тот же план запроса и выполнить его быстрее. Проверьте, сколько времени потребуется в новом окне запроса. – Niar

+0

Строка запроса и подключения строго одинаковы. Временные кружки одинаковы везде и всегда, когда я запускаю запрос в MS SSMS. – Wingi

ответ

0

Итак, я наконец смог избавиться от ошибок времени, добавив индексы в мои таблицы, как указано в this page [MSDN].

Похоже времени прохождения кругов отличается от MS SSMS для .net код ...

Смежные вопросы