MadMyche
Полученная ошибка указывает на то, что вызывающая программа имеет ограничение по времени и что этого ограничения недостаточно для вызываемого запроса.
Тайм-аут по умолчанию для SqlConnection
это 30 секунд. Вы можете переопределить это, установив тайм-аут в определении строки подключения. В традиционной сетевой структуре это было бы сделано либо в app.config
файл или web.config
файл для Ан ASP.NET веб-сайт (разбит на несколько строк для удобства просмотра)
<configuration>
<connectionStrings>
<add name="nmConn" connectionString="Server=nmServer; Database=nmDB;
User Id=nmUser; Password=pwUser;
Connection Timeout=60" />
</connectionStrings>
</configuration>
Подобно тому, как
Объект sqlconnection, существует также тайм-аут для отдельного человека
SqlCommand
Это будет обновлено в блоке кода, который вызывает фактическую команду. Вот пример на языке Си#
string connString = "";
string cmdText = "";
using (SqlConnection conn = new SqlConnection(connString)) {
conn.Open();
SqlCommand cmd = new SqlCommand(cmdText, conn);
cmd.CommandTimeout = 60; // set TimeOut here
try { cmd.ExecuteNonQuery(); }
catch (SqlException sx) {
// provide information from {sx}
}
}
Рекомендации:
Microsoft Docs: Строки Подключения Файлов Конфигурации[
^]
Microsofy Doc: Тайм-Аут Соединения Команд Sql[
^]
Это все находка и денди, но во многих случаях это просто повязка для другой проблемы. Правильная диагностика определит
Почему это происходит
Выясните, какая команда имеет проблему, а затем попробуйте это сделать в SQL IDE, например
Среда Sql Server Management Studio и посмотрите, сколько времени на самом деле требуется, чтобы бежать. Там есть инструменты, которые могут помочь вам (например, показать план выполнения), которые могут показать, что замедляет его работу, а иногда и имеет возможные исправления (например, отсутствующие индексы).