Clase .NET SqlConnection, agrupación de conexiones y lógica de reconexión

Tenemos algún código de cliente que utiliza la clase SqlConnection en .NET para hablar con una base de datos SQLServer. Está fallando intermitentemente con este error:

"ExecuteReader requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado"

La solución "temporal" es reiniciar el proceso, después de lo cual todo funciona, sin embargo, eso es obviamente insatisfactorio.

El código mantiene un caché de instancias de SqlConnection, una para cada base de datos.

Nos gustaría volver a escribir el código, pero antes de hacerlo, necesito saber algunas cosas:

Mi primera pregunta es: ¿es ineficiente conectar y desconectar repetidamente objetos SqlConnection o la biblioteca subyacente realiza la agrupación de conexiones en nuestro nombre?

// Is this bad/inefficient?
for(many-times)
{
    using(SQLConnection conn = new SQLConnection(connectionString))
    {
        // do stuff with conn
    }
}

Porque nuestro código haceno haga lo anterior, lo que parece ser la causa probable del problema es que algo le sucede a la base de datos SQLServer subyacente durante el "tiempo de vida" de la conexión que hace que la conexión se cierre ...

Si resulta que vale la pena "almacenar en caché" los objetos SqlConnection, ¿cuál es la manera recomendada de manejar todos los errores que podrían resolverse simplemente "reconectándose" a la base de datos? Estoy hablando de escenarios como:

La base de datos se desconecta y se vuelve a conectar, pero el proceso del cliente no tuvo transacciones abiertas mientras esto sucedíaLa base de datos fue "desconectada", luego "reconectada"

Me doy cuenta de que hay una propiedad "Estado" en SqlConnection ... ¿hay alguna forma adecuada de consultar eso?

Finalmente, tengo una instancia de SQLServer de prueba configurada con derechos de acceso total: ¿cómo puedo reproducir el error exacto? "ExecuteReader requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado"

Respuestas a la pregunta(3)

Su respuesta a la pregunta