Получение исключения тайм-аута SQL Server, даже если для тайм-аута команды установлено значение 0 - PullRequest
0 голосов
/ 12 октября 2018

Я установил тайм-аут команды на 0 в соответствии с документацией в SQL Server.Я индексирую большую таблицу и все еще получаю исключение «Истекло время ожидания выполнения».Время ожидания истекло до завершения операции или сервер не отвечает.Сервер отвечает, как я смотрю через монитор SQL Server.

Вот соответствующий код:

private void ExecuteQuery(string qStr)
{
    using (SqlConnection cnx = new SqlConnection(_ConnectionString))
    {
        cnx.Open();

        using (SqlCommand cmd = new SqlCommand(qStr, cnx))
        {
            cmd.CommandTimeout = 0;
            cmd.ExecuteNonQuery();
        }
    }
}

Это строка подключения
Data Source='tcp:aplace.database.windows.net,1433';Initial Catalog='SQL-Dev';User Id='user@place';Password='password';Connection Timeout=360

Почему я получаю тайм-аут выполнения?У меня также установлено тайм-аут соединения на 7200 секунд.Я индексирую таблицу из 31 миллиона строк в одном столбце.

1 Ответ

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

Во-первых, время ожидания соединения и время ожидания команды не одно и то же.Убедитесь, что вы понимаете разницу и правильно их используете.

Во-вторых, если это с веб-страницы, вам также необходимо учесть значения времени ожидания, относящиеся к веб-серверу и т. Д.

Третий, чтобы убедиться, что это действительно проблема с тайм-аутом, выполните инструкцию index в SSMS и выясните, сколько времени это займет.Поскольку фактическое индексирование выполняется на сервере SQL независимо от того, откуда он вызывается, время индексирования должно быть примерно одинаковым независимо от того, выполняется ли оно из SSMS или из вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...