SQL Server 2008 - неустойчивая ошибка 18456 с sa - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть приложение, которое использует группу SQL 2008 баз данных. По какой-то причине основная база данных периодически выдает серию ошибок 18456 (Ошибка входа - не удалось открыть явно указанную базу данных). Это заставляет приложение парить и часто крадет sh. В журналах сервера SQL сервер генерирует десятки событий за короткий промежуток времени, обычно такой:

Login succeeded for user 'sa'. Connection made using SQL Server authentication. [CLIENT: <local machine>]
Error: 18456, Severity: 14, State: 38.
Login failed for user 'sa'. Reason: Failed to open the explicitly specified database '[my_db]'. [CLIENT: <local machine>]

Когда это происходит, это происходит неоднократно. Я насчитал 73 всего событий за 4 минуты в последнем инциденте.

Вот что регистрирует приложение:

Невозможно открыть базу данных "[my_db]", запрошенную при входе в систему. , Ошибка входа.

Ошибка входа пользователя 'sa'.

System.Data.SqlClient.SqlException (0x80131904): Невозможно открыть базу данных "[my_db]", запрошенную при входе в систему. Не удалось войти в систему.

Не удалось выполнить вход в систему для пользователя 'sa'.

в System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerPword, String объекта , SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, String маркер доступа, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (опции DbConnectionOptions, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection , DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions в параметрах пользователя) stem.Data. DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, булева allowCreate, булева onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & соединение) System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource1 повторных попыток, DbConnectionOptions userOptions, DbConnectionInternal & соединение) System.Data.ProviderBase.DbConnectionFactory. TryGetConnection (DbConnection owningConnection, TaskCompletionSource1 повтор, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal & connection) в System.Data.ProviderBase.DbCo nnectionInternal.TryOpenConnectionInternal (DbConnection outerConnection, DbConnectionFactory ConnectionFactory, TaskCompletionSource1 повторных попыток, DbConnectionOptions userOptions) при System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory ConnectionFactory, TaskCompletionSource1 повторить попытку, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpenInner ( TaskCompletionSource1 повторяется) в System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource1 повторяется) в System.Data.SqlClient.SqlConnection.Open ()

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

Data Source=localhost\SQLEXPRESS;Initial Catalog=[my_db];Persist Security Info=True;User ID=sa;Password=[password]

Имя входа sa, конечно же, сопоставлено с dbo, и для его базы данных по умолчанию установлено значение master. Я проверил, что для входа в dbo в этой базе данных назначена роль db_owner. Права доступа к файлам ldf / mdf являются настройками по умолчанию, и вошедший в систему пользователь имеет к ним доступ. Эти файлы также исключаются из антивирусного программного обеспечения, поэтому они не блокируются этим.

Какого черта я здесь скучаю?

...