Какой интервал времени в `SqlCommand` представляет` CommandTimeout`? - PullRequest
0 голосов
/ 11 октября 2018

Я запрашиваю базу данных Microsoft SQL, используя SqlConnection, SqlCommand и SqlReader, во многом как описано в https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/retrieving-data-using-a-datareader

Теперь SqlCommand позволяет установить CommandTimeoutи я делаю это так (упрощенно):

using (SqlConnection connection = GetConnection()) {
    connection.Open();
    using (SqlCommand command = connection.CreateCommand()) {

        command.CommandText = query; //My custom SQL query
        command.CommandType = CommandType.Text;

        //Set Timeout
        command.CommandTimeout = timeout.Value; //My custom timeout

        using (SqlDataReader reader = command.ExecuteReader()) {
            while (reader.Read()) {
                //Read row by row and do stuff
            }
        }
    }
}

Мой вопрос: к чему на самом деле относится Тайм-аут? Это

  • Время, проведенное в ExecuteReader()
  • Время, проведенное в Read()
  • оба эти
  • что-то еще?

Кажется,нет конкретной документации по этому вопросу, ни в MSDN, ни в Интернете.

1 Ответ

0 голосов
/ 11 октября 2018

Это будет применяться ко времени выполнения команды для базы данных, которое равно command.ExecuteReader(), которое завершается к тому времени, когда вы начинаете читать записи.Вы можете проверить это, поставив точку останова после этого на while и сидя там - вы не достигнете своего тайм-аута.

...