Asp.net основное исключение SQLException на сервере Digital Ocean Linux

#asp.net #sql-server #asp.net-core #entity-framework-core #digital-ocean

#asp.net #sql-сервер #asp.net-ядро #сущность-фреймворк-ядро #digital-ocean

Вопрос:

Я разрабатываю Asp.net базовое приложение и развертывание его на сервере Digital Ocean Linux Droplet. Я вручную установил Sql Server 2019 Express (бесплатно).

Все работает нормально, но в одночасье, похоже, что-то происходит, и на следующий день, когда я пытаюсь получить доступ к своему приложению из браузера, я получаю следующее исключение:

**

 Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. 
(provider: TCP Provider, error: 0 - Success)    
at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)    
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)    
at Microsoft.Data.SqlClient.TdsParserStateObject.ThrowExceptionAndWarning(Boolean callerHasConnectionLock, Boolean asyncClose)    
at Microsoft.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)    
at Microsoft.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()    
at Microsoft.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()    
at Microsoft.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()    
at Microsoft.Data.SqlClient.TdsParserStateObject.TryReadByte(Byteamp; value)    
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Booleanamp; dataReady)    
at Microsoft.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)    
at Microsoft.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)    
at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)    
at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)    
at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)    at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, SqlAuthenticationProviderManager sqlAuthProviderManager)    at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)    
at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)    at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)    at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)    at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternalamp; connection)    at Microsoft.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() --- End of stack trace from previous location where exception was thrown ---    
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbC
 

**

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

Есть идеи, что может произойти, чтобы помешать моему приложению получить доступ к базе данных Sql? Я хотел бы попытаться остановить это.

Комментарии:

1. Вы пытались найти сообщение об ошибке в Google? Возможно, сервер базы данных не работает? Хостеры обычно отключают виртуальные машины, если они простаивают в течение некоторого времени.

2. Когда я пытаюсь подключиться с помощью SSMS, я могу подключиться, так что, похоже, все в порядке. После этого мое приложение начинает работать

3. Именно поэтому я упомянул время простоя.