Почему мое приложение на базе Telerik через некоторое время теряет соединение с удаленным SQL-сервером?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему мое приложение на базе Telerik через некоторое время теряет соединение с удаленным SQL-сервером?

Сообщение Anonymous »

Я занимаюсь поддержкой приложения C#, основанного на технологии Telerik и подключенного к удаленному SQL-серверу.
Соединение устанавливается с помощью строки подключения, которая выглядит вот так:

Код: Выделить всё

"Data Source=10.131.53.7;Initial Catalog=DB_name;User ID=User;Password=pwd1234"
(Не беспокойтесь о слабом пароле: информация искажена из соображений безопасности).
Все работает нормально, но через некоторое время (±30 минут) я получаю исключение, в котором говорится, что результат запроса не может быть получен из-за разрыва соединения. В сообщении об исключении упоминается имя удаленного сервера, который недоступен, и это имя пусто:

Невозможно связаться с сервером базы данных на хосте ''.

У меня такое впечатление, что возникла проблема со связью: соединение с SQL Server закрывается таким образом, что мое приложение теперь думает, что имя SQL Server имя пусто.
Кто-нибудь знает, как это возможно?
Машина по-прежнему доступна с помощью ping:

Код: Выделить всё

Prompt>ping 10.131.53.7

Pinging 10.131.53.7 with 32 bytes of data:
Reply from 10.131.53.7: bytes=32 time=29ms TTL=123
Reply from 10.131.53.7: bytes=32 time=22ms TTL=123
Reply from 10.131.53.7: bytes=32 time=28ms TTL=123
Reply from 10.131.53.7: bytes=32 time=22ms TTL=123

Ping statistics for 10.131.53.7:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 22ms, Maximum = 29ms, Average = 25ms
Я считаю, что связь между моим приложением и SQL Server основана на TCP, отсюда и соответствующий тег по этому вопросу.
Для вашей информации: вот полное сообщение об исключении:

2023-11-17 08:37:53.5162 | ПродуктКлиент.Коммуникации.СерверСвязь | Исключение во время события изменения данных БД (изменений) ---

Telerik.OpenAccess.Exceptions.DataStoreException: невозможно достичь сервера базы данных на хосте ''.

Сведения об ошибке: Ошибка выполнение запроса:

Telerik.OpenAccess.RT.sql.SQLException: при получении результатов с сервера произошла ошибка транспортного уровня. (поставщик: поставщик сеансов, ошибка: 19 — физическое соединение невозможно использовать)

System.Data.SqlClient.SqlException: при получении результатов с сервера произошла ошибка транспортного уровня. (поставщик: поставщик сеансов, ошибка: 19 — физическое соединение невозможно использовать)
at System.Data.SqlClient.SqlConnection.OnError(исключение SqlException, логическое значение BreakConnection, Action'1 WrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32) ошибка)

в System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()

в System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()

в System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()

в System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& значение)

в System.Data.SqlClient.TdsParser .TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet BulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()

at System.Data.SqlClient.SqlDataReader.get_MetaData()

at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean mustCacheForAlwaysEncrypted)

at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& Task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean defineParameterEncryptionRequest)< бр / >
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод, завершение TaskCompletionSource'1, тайм-аут Int32, Task& Task, Boolean& UsedCache, Boolean asyncWrite, Boolean inRetry)

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод)

at System.Data.SqlClient.SqlCommand.ExecuteReader(поведение CommandBehavior) , строковый метод)

в OpenAccessRuntime.CommandWrapper.ExecuteReader(поведение CommandBehavior)

в Telerik.OpenAccess.Runtime.Logging.LoggingDbCommand.ExecuteDbDataReader(поведение CommandBehavior)

в Telerik.OpenAccess.RT.Adonet2Generic.Impl.CommandImp.ExecuteReader()

в Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery(Nullable'1 commandTimeout)

--- Конец внутренней трассировки стека исключений ---

at Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery(Nullable'1 commandTimeout)

в OpenAccessRuntime.Relational.conn.PooledPreparedStatement.executeQuery(Nullable'1 commandTimeout)

в OpenAccessRuntime.Relational.fetch.FetchResultImp.Execute()
SQL:

ВЫБЕРИТЕ a.[voa_class] COL1, a.[AlarmId] COL2, ... FROM [Транспортные средства] WHERE a.[Id] = ?
Telerik.OpenAccess.RT.sql.SQLException: произошла ошибка транспортного уровня при получении результатов с сервера. (поставщик: поставщик сеансов, ошибка: 19 — физическое соединение невозможно использовать)

System.Data.SqlClient.SqlException: при получении результатов с сервера произошла ошибка транспортного уровня. (поставщик: поставщик сеансов, ошибка: 19 – физическое соединение невозможно использовать)


Подробнее здесь: https://stackoverflow.com/questions/775 ... sql-server
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»