Pregunta

He creado un reflejo de base y luego utilizado este connectionstring para conectarse a él:

    Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
    Integrated Security=True;

Después de añadir algunos datos en la base de datos, que apagar el servidor principal, por lo que el servidor reflejado se convierte en el servidor principal. Abro la conexión de nuevo, una sale este error:

    System.Data.SqlClient.SqlException: A transport-level error has 
occurred when sending the request to the server. (provider: Shared Memory 
Provider, error: 0 - No process is on the other end of the pipe.)

pensé que con conmutación por error socio especifica en la cadena de conexión, ADO.NET haría el trabajo para mí. Entonces, ¿qué debería hacer ahora?

¿Fue útil?

Solución

Afortunadamente, me fijo este problema. Todo lo que hay que hacer es llamar al método Clearpool:

SqlConnection.ClearPool(conn);

Este método se borrará la agrupación de conexiones. Entonces, el problema se ha ido. Estoy muy contento con él.

Gracias, a todos ustedes, por su apoyo. : D

Otros consejos

No soy un experto en la materia .net pero necesito el cliente nativo de SQL (SQLNCLI) para manejar la conmutación por error. "Ado.net" puede ser SQLOLEDB

Hasta Windows Server 2003, al menos, no se instala por defecto. Es ya sea independiente o parte de las herramientas de cliente de SQL, así que sospecho que está utilizando SQLOLEDB

Después de apagar el director, ¿Verificó que la conmutación por error de hecho se convirtió en el director? Si no tuviera la conmutación por error automática en el servidor SQL, entonces el espejo sigue siendo un espejo.

Hemos encontrado que esto sucedería si no tenías un conjunto de tiempo de espera lo suficientemente grande.

https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top