Подтвердить что ты не робот

Ошибка подтверждения подлинности входа в систему SQL Server

У нас есть производственный сайт со смесью классического ASP, встроенного .NET и скомпилированного .Net, который рассказывает об экземпляре SQL Server, где оба являются виртуальными машинами на одном физическом поле, и все там отлично работает. Для проведения некоторых тестов с новыми функциями я создал QA-версию сайта и установил его для подключения к базе данных на виртуальной машине, размещенной на другом физическом сервере. Это разные сети (DMZ/internal), но все в одной стойке на гигабите, поэтому скорость соединения не должна быть проблемой.

Проблема, с которой мы сталкиваемся, - это версия QA, которая будет работать немного, а затем внезапно умирает, пока я не перезапущу пул приложений и сайт. Это не проблема загрузки, потому что только я и еще два человека тестируют этот процесс, и я подтвердил сервер, на котором находится база данных QA, не имеет проблемы с ресурсами (16 ГБ оперативной памяти, 3,2 ГБ в использовании и загрузка процессора 2%). Конкретная ошибка (показана ниже) происходит со всеми вариантами страниц - классическим ASP, встроенным .Net и скомпилированными страницами .Net. Основываясь на всех проведенных нами исследованиях, я все время обращал внимание на проблему с брандмауэром, но мы даже открыли все порты между двумя серверами, и это все еще происходит. Самая странная часть - когда мы включаем трассировку на нашей ASA (5515-X), она почти не видит трафика, и иногда сайт мгновенно отбрасывает эту ошибку, в то время как в других случаях это занимает 30 + секунд. Страницы, о которых идет речь, не делают интенсивных поисков (одна страница, которая умирает, захватывает в общей сложности около 60 записей). Вот полная трассировка ошибок/стека:

  [Win32Exception (0x80004005): The wait operation timed out]

  [SqlException (0x80131904): Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  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=21008; handshake=12; ]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6749670
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815
   System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +817
   System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() +344
   System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() +48
   System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean& marsCapable) +126
   System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +693
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +219
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +6777754
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +6778255
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +878
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1162
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +72
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +6781425
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +103
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +2105
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +1089
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6785863
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278
   System.Data.SqlClient.SqlConnection.Open() +239
   System.Web.UI.Control.LoadRecursive() +71
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

Я бы показал блок кода, но так как все страницы начинают умирать, как только это делается, это не принесет пользы. Все это отлично работает в области производства, поэтому единственное различие заключается в том, что виртуальные машины находятся на разных физических хостах, но, учитывая, что все новое оборудование не имеет причин, у этого должны быть проблемы.

Я также сталкивался с несколькими вещами здесь, где использовал exec sp_updatestats и dbcc freeproccache, однако ни один из них, похоже, не изменил ситуацию.

Я полностью потерял все предложения?

4b9b3361

Ответ 1

Я столкнулся с проблемой, подобной этому, несколько месяцев назад.

Для меня исправлена ​​проблема включения TCP/IP для IPV4 и IPV6 в диспетчере конфигурации SQL Server. Я также видел это, даже если IPV6 не установлен. Как ни странно, я даже испытал такое поведение, даже когда я указываю только адреса IPV4?!

Ответ 2

Если подобная проблема с SQL Express 2014 оказалась проблемой Windows Firewall, некоторые из наших серверов имеют на них SQL 2005/2008, все с отключенным брандмауэром Windows.

Сделал изменения на моем ПК, и он отлично сработал после этого!

Спасибо

Брендан

Ответ 3

Имел ту же самую проблему/сообщение об ошибке. Для меня это настройки брандмауэра на сервере. Убедитесь, что TCP-порт 1433 открыт для входящего трафика.

Ответ 4

Я получил эту ошибку после включения брандмауэра. Я добавил порты для брандмауэра, посмотрев включить сервер sqlserver то снова я получил эту ошибку.

Включите именованные каналы и TCP/IP в диспетчере конфигурации SQL Server, вы можете найти его в:

Startmenu > allprogram > сервер Microsoft SQL > инструменты настройки.