Timeout error while connecting sql server



Сообшения «Истекло время ожидания» при подключении к SQL Server

Применяется к: SQL Server

Прежде чем приступить к устранению неполадок, рекомендуется проверить предварительные требования и ознакомиться с контрольным списком.

Ошибка времени ожидания означает, что определенная операция занимает больше времени, чем требуется. Клиентское приложение останавливает операцию (вместо бесконечного ожидания), что может блокировать другие операции и приостанавливать приложение. В этой статье приведены способы устранения ошибок «время ожидания команд» и «время ожидания подключения», которые вы получаете при подключении к SQL Server.

Проверка ошибок истечения времени ожидания

При возникновении проблемы, связанной с истечением времени ожидания, появляется одно или несколько сообщений об ошибке:

Истекло время ожидания. Срок ожидания истек до завершения операции, или сервер не отвечает.

System.Data.SqlClient.SqlException (0x80131904): истекло время ожидания подключения. Время ожидания истекло при попытке обработки подтверждения предварительного согласования. Возможно, произошел сбой во время предварительного согласования, или сервер не смог ответить вовремя. Время, затраченное на попытки подключиться к этому серверу, составило: [Pre-Login] initialization=23; handshake=14979;
System.ComponentModel.Win32Exception (0x80004005): Время ожидания операции истекло.

System.Data.SqlClient.SqlException (0x80131904): истекло время ожидания. Срок ожидания истек до завершения операции, или сервер не отвечает. System.ComponentModel.Win32Exception (0x80004005): Время ожидания операции истекло.

Истекло время ожидания соединения. Время ожидания истекло при попытке обработки подтверждения предварительного согласования. Возможно, произошел сбой во время предварительного согласования, или сервер не смог ответить вовремя.
Время, затраченное на попытку подключения к этому серверу, было [Pre-Login] initialization=21036; handshake=0; (Microsoft SQL Server, Error: -2).

Истекло время ожидания входа Время ожидания истекло до получения подключения из пула.

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

Вторая и третья ошибка возникают, если установлена платформа .NET Framework версии 4.5 или более поздней.

Определение типа ошибок истекшего времени ожидания

С точки зрения подключения возникают следующие проблемы с временем ожидания:

  • Время ожидания подключения (по умолчанию 15 секунд)
  • Время ожидания запроса или команды (по умолчанию — 30 секунд)

Значения по умолчанию можно задать с помощью кода, строки подключения или других методов.

Перед устранением неполадок просмотрите полный стек вызовов сообщений об ошибках, чтобы определить тип ошибки.

См. следующий пример стека вызовов времени ожидания подключения:

SqlConnection.Open указывает, что клиент пытается открыть подключение и, следовательно, не связано с запросом.

См. следующий пример стека вызовов запроса или времени ожидания команды:

Этот класс SqlCommand используется для работы с запросом, а не с подключением. Этот метод ExecuteScalar используется для выполнения запроса. Вы также можете увидеть другие элементы, такие как ExecuteReader или ExecuteNonQuery .

Устранение ошибок, связанных с истечением времени ожидания

Если возникает ошибка запроса или времени ожидания команды, см. раздел Устранение ошибок времени ожидания запроса.

При возникновении ошибки времени ожидания подключения выполните следующие действия.

Увеличьте параметр времени ожидания подключения.

Если используется приложение для подключения к SQL Server, увеличьте соответствующие значения параметров времени ожидания подключения и убедитесь, что подключение в конечном итоге успешно установлено. Например, при использовании System.Data.Sqlcient задайте для свойства SqlConnection.ConnectionTimeout значение 30 или более высокое.

Если вы используете SQL Server Management Studio (SSMS), выберите вкладку Свойства подключения в диалоговом окне Подключение к серверу и задайте для Параметра времени ожидания подключения более высокое значение.

Если подключение в конечном итоге завершится успешно, то проблема вызвана сетью. Чтобы устранить эту проблему, обратитесь к администратору сети. После устранения проблемы можно вернуться к параметрам по умолчанию в приложении.

Увеличение времени ожидания подключения в приложении является возможным методом, но не является долгосрочным решением. Это связано с тем, что при попытке подключения к источнику данных подключение происходит быстро (обычно в течение нескольких миллисекунд).

Типичные причины и способы устранения ошибки

В следующей таблице перечислены типичные причины и способы устранения ошибок «Истекло время ожидания». Дополнительные советы и предложения см. в разделе Устранение неполадок: истекло время ожидания.

Читайте также:  Configure error gyp err stack error gyp failed with exit code 1

Источник

Timeout expired messages when connecting to SQL Server

Applies to: В SQL Server

Before you start troubleshooting, check the prerequisites and go through the checklist.

A timeout error means that a certain operation takes longer than needed. The client application stops the operation (instead of waiting indefinitely), which may block other operations and suspend an application. This article provides resolutions for «command-timeout» and «connection-timeout» errors you receive when you connect to SQL Server.

Verify timeout expired errors

When you encounter «timeout expired» issues, you receive one or more of the following error messages:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgment. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was [Pre-Login] initialization=23; handshake=14979;
System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out.

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out.

Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgment. This could be because the pre-login handshake failed or the server was unable to respond back in time.
The duration spent while attempting to connect to this server was [Pre-Login] initialization=21036; handshake=0; (Microsoft SQL Server, Error: -2).

System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.

If connections aren’t closed correctly, errors may occur. These errors occur because all pooled connections are in use, and max pool size is reached. You can avoid these errors if you follow the steps described in the exhausted the connection pool article.

The second and the third error occur when .NET Framework 4.5 or a later version is installed.

Determine the type of timeout expired errors

From a connectivity perspective, you encounter the following timeout issues:

  • Connection timeout (15 seconds by default)
  • Query or command timeout (30 seconds by default)

The default values can be set through code, connecting string, or other methods.

Before troubleshooting, view the complete call stack of the error messages to determine the error type.

See the following example of a call stack of a connection timeout:

SqlConnection.Open indicates that the client is trying to open a connection and therefore isn’t related to a query.

See the following example of a call stack of a query or command timeout:

The SqlCommand class is used to work with a query, not a connection. The ExecuteScalar method is used to run a query. You can also see other items, such as an ExecuteReader or ExecuteNonQuery .

Troubleshoot timeout expired errors

If you encounter a query or command-timeout error, see Troubleshoot query time-out errors.

If you encounter a connection-timeout error, follow the steps:

Increase the connection-timeout parameter.

If you use an application to connect to SQL Server, increase the relevant connection-timeout parameter values and check whether the connection eventually succeeds. For example, if you use System.Data.Sqlcient , set the SqlConnection.ConnectionTimeout property to 30 or a higher value.

If you use SQL Server Management Studio (SSMS), select the Connection Properties tab in the Connect to Server dialog box, and set Connection time-out setting to a higher value.

If the connection eventually succeeds, it’s a network issue. You need to work with your network administrator to resolve the issue. After it’s resolved, you can revert to default settings in your application.

Increasing the connection timeout in the application is a possible method, but it isn’t a long-term resolution. This is because the connection occurs quickly (usually within a few milliseconds) when you try to connect to a data source.

Читайте также:  Exception header in java

Typical causes and resolutions for the error

The following table lists typical causes and resolutions for timeout expired errors. For more tips and suggestions, see Troubleshooting: Timeout Expired.

Источник

KB4499423 — FIX: Performance issues and timeouts may occur while connecting with SQL Server 2017

Symptoms

Assume that you use SQL Server 2017 and you have many SQL Server Integration Services (SSIS) packages, you may notice that SSIS or Power BI reports fail sporadically with the following connection timeout errors:

«_Main_XXXXX:Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.»

An OLE DB record is available. Source: «Microsoft SQL Server Native Client 11.0» Hresult: 0x80004005 Description: «Login timeout expired».

An OLE DB record is available. Source: «Microsoft SQL Server Native Client 11.0» Hresult: 0x80004005 Description: «Unable to complete login process due to delay in login response».

An OLE DB record is available. Source: «Microsoft SQL Server Native Client 11.0» Hresult: 0x80004005 Description: «TCP Provider: Timeout error [258]. «.»

Otherwise, the issue is not limited to SSIS or Power BI reports only. Any application can hit performance issues and timeouts while connecting with SQL Server.

This fix introduces two new columns, error_code and op_history in sys.dm_os_buffer_descriptors DMV. Error_code column represents the error information during latest attempt to populate the buffer in question. Op_history column represents operational history of the buffer in bit format (4 bit per operation, 16 operations total, last 4 bits represent the latest operation and shift left as time progresses).

Note This fix does not resolve any specific errors that you see while populating the buffer pages. It only exposes information about error codes and operations on buffers so that additional troubleshooting can be performed with the new information.

Root Cause

The timeout and performance issues are generic in nature and can have many underlying root causes. In this particular case, there are many errors and retries which are observed while trying to read data pages from data files and populating the memory Buffers (memory representation of data pages). The root cause for buffer population errors are not identified clearly as the underlying error codes while trying to populate the buffers that are not exposed.

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the «Applies to» section.

Resolution

This issue is fixed in the following cumulative update for SQL Server:

About cumulative updates for SQL Server:

Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:

References

Learn about the terminology that Microsoft uses to describe software updates.

Источник

Troubleshoot query time-out errors

Symptoms

Assume that an application queries data from a SQL Server database. If the query doesn’t return any data within the configured time-out value (typically 30 seconds), the application cancels the query and generates one of these error messages:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated.

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Explanation

These errors occur on the application side. The application sets a time-out value and if the time out is reached, it cancels the query. On the SQL Server side, a query cancellation from the client side causes an Attention event, error 3617 (MSSQLSERVER_3617). If the time-out value on the application side is set to (no time limit), the Database Engine will execute the query until it’s completed.

  • In .NET Framework System.Data.SqlClient, the time-out value is set on the CommandTimeout property.
  • In ODBC API, it’s set through the SQL_ATTR_QUERY_TIMEOUT attribute in the SQLSetStmtAttr function.
  • In Java Database Connectivity (JDBC) API, it’s set through the setQueryTimeout method.
  • In OLEDB, it’s set through the DBPROP_COMMANDTIMEOUT property on the DBPROP structure.
  • In VBA (Excel), it’s set through the ADODB.Command.CommandTimeout property.
Читайте также:  Error at hooking api loadstringa dumping first 32 bytes как решить gta 5 rp

Query time-out is different from a connection time-out property. The latter controls how long to wait for a successful connection and isn’t involved in query execution. For more information, see Query time-out is not the same as connection time-out.

Troubleshooting steps

By far, the most common reason for query time-outs is underperforming queries. That means that the query runs longer than the pre-defined query time-out value. Making the query run faster is the recommended first target of your troubleshooting. Here’s how to check queries:

Use Extended Events or SQL Trace to identify the queries that cause the time-out errors. You can trace the attention event together with the sql_batch_completed and rpc_completed extended events, and correlate them on the same session_id . If you observe a completed event is immediately followed by an attention event, and the duration of the completed event corresponds approximately to the time-out setting, you’ve identified the query. Here’s an example:

In the example, the SELECT query ran for almost exactly 30 seconds and stopped. The attention event having the same session ID indicates that the query was canceled by the application.

Name Session_id Sql_text Duration (microseconds) Timestamp
sql_batch_started 54 Select … from Customers WHERE cid = 192937 NULL 2021-09-30 09:50:25.0000
sql_batch_completed 54 Select … from Customers WHERE cid = 192937 29999981 2021-09-30 09:50:55.0000
Attention 54 Select … from Customers WHERE cid = 192937 40000 2021-09-30 09:50:55.0400

Execute and test the queries in SQLCMD or in SQL Server Management Studio (SSMS).

If the queries are also slow in SQLCMD and SSMS, troubleshoot and improve the performance of the queries.

In SQLCMD and SSMS, the time-out value is set to (no time limit) and the queries can be tested and investigated.

If the queries are fast in SQLCMD and SSMS, but slow on the application side, change the queries to use the same SET options used in SQLCMD and SSMS. Compare the SET options by collecting an Extended Events trace (login and connecting events with collect_options_text ) and check the options_text column. Here’s an example:

Check if the CommandTimeout setting is smaller than the expected query duration. If the user’s setting is correct and time-outs still occur, it’s because of a query performance issue. Here’s an ADO.NET code example with a time-out value set to 10 seconds:

Query time-out is not the same as connection time-out

A query time-out is different from a connection time-out or login time-out. The connection or login timeout occurs when the initial connection to the database server reaches a predefined time-out period. At this stage, no query has been submitted to the server. These are examples of connection or login time-out error messages:

Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgment. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was [Pre-Login] initialization=23; handshake=14979;

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out.

The connection time-out value is a client-side setting and is typically set to 15 seconds. For more information about how to troubleshoot connection time-out, see troubleshoot connection timeout. For query timeout troubleshooting, watch this video.

Источник

Оцените статью
toolgir.ru
Adblock
detector