2008-09-09 12 views
6

Aquí está el error completo: SqlException: A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 1 - I/O Error detected in read/write operation)lo que causa esta SqlException: Un error de nivel de transporte se ha producido al recibir los resultados desde el servidor

he empezado viendo este mensaje de forma intermitente durante unas pocas de las pruebas unitarias en mi solicitud (hay más de 1100 unidades de & pruebas del sistema). Estoy usando el corrector de prueba en ReSharper 4.1.

Otra cosa: mi máquina de desarrollo es una máquina virtual VMWare.

Respuesta

5

Me encontré con este hace muchas lunas. En resumen, se está quedando sin puertos disponibles.

Primero asegúrese de que su aplicación de llamada tenga agrupada la conexión.

Si eso hace, entonces verifique la cantidad de puertos disponibles para SQL Server.

Lo que está sucediendo es que si la agrupación está desactivada, entonces cada llamada toma un puerto y tarda de forma predeterminada 4 minutos en expirar el puerto, y se está quedando sin puertos.

Si la agrupación está activada, entonces necesita crear un perfil de todos los puertos de SQL Server y asegurarse de tener suficiente y expandirlos si es necesario.

Cuando me encontré con este error, la agrupación de conexiones estaba desactivada y causaba este problema siempre que se colocaba una carga decente en el sitio web. No lo vimos en desarrollo porque la carga era de 2 o 3 personas al máximo, pero una vez que el número creció por encima de 10 seguimos viendo este error. Nos volvimos a poner en común, y lo solucionó.

2

Me encontré con esto hace muchas lunas también. Sin embargo, no para descartar la explicación de @ Longhorn213s, pero teníamos el comportamiento exactamente opuesto. Recibimos el error en el desarrollo y las pruebas, pero no en la producción donde obviamente la carga era mucho mayor. Terminamos tolerando el problema en el desarrollo porque era esporádico y no retrasaba el progreso materialmente. Creo que puede haber varias razones para este error, pero nunca pude identificar la causa yo mismo.

+0

Como sugiere Trumpi, he descubierto que este error puede ocurrir simplemente al hacer ciclismo en el servidor de bases de datos (o cualquier cosa que obligue al servidor a liberar la conexión).La conexión todavía se almacena en caché en algún nivel desde el otro extremo (en el software del cliente o en un grupo) y luego, durante el intento de usarlo, el descubrimiento de que ya no es válido devuelve "error de nivel de transporte". Probablemente sea porque no reinicia su servidor DB de producción (algo bueno) y reinicia su servidor DB de desarrollo (¿a quién le importa?). – ErikE

0

Lo he visto mucho cuando la red funcionaba bien, o la NIC estaba en camino. Mira tu stack de red.

0

Vimos esto en nuestro entorno, y trazamos parte de él hasta la pista "NOLOCK" en nuestras consultas. Eliminamos la sugerencia de NOLOCK y configuramos nuestros servidores para usar el modo de aislamiento de instantáneas, y la frecuencia de estos errores se redujo bastante.

1

También hemos encontrado este error y descubrimos que estamos eliminando una conexión de servidor SQL del servidor de la base de datos. La aplicación cliente tiene la impresión de que la conexión aún está activa y trata de usar esa conexión, pero falla porque se terminó.

0

Hemos visto este error varias veces y hemos probado diferentes resoluciones con éxito variable. Un tema subyacente común ha sido que el sistema que dio el error se estaba quedando sin memoria. Esto es especialmente cierto si el servidor que aloja SQL Server está ejecutando CUALQUIER otro proceso que no sea OS. De forma predeterminada, SQL Server obtendrá cualquier memoria que pueda, y luego dejará poco para otros procesos/controladores. Esto puede causar un comportamiento errático y mensajes intermitentes. Es una buena práctica configurar su SQL Server para obtener una memoria máxima que deja espacio libre para otros procesos que puedan necesitarlo. Ejemplo: Visual Studio en una máquina de desarrollo que ejecuta una copia de la edición de desarrolladores de SQL Server en la misma máquina.

Cuestiones relacionadas