asp.net - referencia - Error de confirmación de inicio de sesión previo al inicio de sesión de SQL Server
se produjo un error referencia a objeto no establecida como instancia de un objeto (4)
Me encontré con un problema similar a este hace unos meses.
Para mí, la habilitación de TCP / IP para IPV4 e IPV6 en el Administrador de configuración de SQL Server solucionó el problema. También he visto que esto ocurre incluso cuando IPV6 no está instalado. Por extraño que parezca, ¡¿incluso he experimentado este comportamiento incluso cuando solo especifico direcciones IPV4 ?!
Esta pregunta ya tiene una respuesta aquí:
- La conexión a SQL Server funciona A veces 16 respuestas
Tenemos un sitio web de producción con una combinación de ASP clásico, inline .Net y compilado .Net que habla con una instancia de SQL Server donde ambas son máquinas virtuales en la misma caja física y todo funciona de maravilla. Para realizar algunas pruebas con nuevas funciones, creé una versión de control de calidad del sitio y configuré la configuración para conectarse a una base de datos en una máquina virtual alojada en otro servidor físico. Son redes diferentes (DMZ / internas), pero todas en el mismo rack en gigabit, por lo que las velocidades de conexión no deberían ser un problema.
El problema con el que nos encontramos es que la versión de control de calidad funcionará un poco y luego se extinguirá repentinamente hasta que reinicie el grupo de aplicaciones y el sitio. No es un problema de carga porque solo somos yo y otras dos personas que están probando este proceso y confirmé que el servidor en el que se encuentra la base de datos de control de calidad no tiene un problema de recursos (16 GB de RAM, 3,2 GB en uso y la utilización del procesador está en el Rango del 2%). El error específico (que se muestra a continuación) ocurre con todas las variantes de las páginas: ASP clásico, inline .Net y las páginas compiladas .Net. Basándome en todas las investigaciones que he hecho, me vuelvo a señalar que es un problema de cortafuegos, pero incluso abrimos todos los puertos entre los dos servidores y aún sucede. La parte más extraña es cuando habilitamos el rastreo en nuestro ASA (5515-X), casi no hay tráfico y, a veces, el sitio repite ese error inmediatamente mientras que otras veces toma más de 30 segundos. Las páginas en cuestión no están realizando búsquedas intensas (una página que muere está obteniendo un total de aproximadamente 60 registros) también. Aquí está el error completo / seguimiento de la pila:
[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
Mostraría un bloque de código, pero como todas las páginas comienzan a morir una vez que lo hace, no serviría de mucho. Todo esto funciona muy bien en producción, por lo que la única diferencia es que las máquinas virtuales están en hosts físicos diferentes, pero dado que todo es hardware nuevo, no hay razón para que esto tenga problemas.
También me he topado con varias cosas aquí donde exec sp_updatestats
y dbcc freeproccache
, sin embargo, ninguno de los dos parecía hacer una diferencia.
Estoy completamente perdido así que alguna sugerencia?
Recibí este error después de habilitar el firewall. Agregué puertos al firewall, habilite el puerto sqlserver y nuevamente obtuve ese error.
Habilite las canalizaciones con nombre y TCP / IP en el Administrador de configuración de SQL Server, puede encontrarlo en:
Startmenu> allprogram> microsoft sql server> herramientas de configuración.
Tenía un problema similar con SQL Express 2014, resultó ser un problema de Firewall de Windows, algunos de nuestros Servidores tienen SQL 2005/2008, todos con el Firewall de Windows desactivado.
¡Hice el cambio en mi PC y funcionó perfectamente después!
Gracias
Brendan
Tuvo el mismo problema / error msg. Para mí, es la configuración del servidor de seguridad en el servidor. Asegúrese de que el puerto TCP 1433 esté abierto para el tráfico entrante.