Domanda

ho creato un mirroring del database e quindi usato questo connectionstring di connettersi ad esso:

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

Dopo aver aggiunto alcuni dati nel database, ho spegnere il server principale, in modo che il server mirror diventa il server principale. Apro di nuovo la connessione, un ottengo questo errore:

    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.)

Ho pensato che con failover partner specificato nella stringa di connessione, ADO.NET avrebbe fatto il lavoro per me. Quindi cosa devo fare ora?

È stato utile?

Soluzione

Per fortuna, ho risolto questo problema. Tutto quello che devi fare è chiamata al metodo ClearPool:

SqlConnection.ClearPool(conn);

Questo metodo cancellerà il pool di connessioni. Quindi, il problema è andato. Sono così felice con lui.

Grazie, a tutti voi, per il vostro sostegno. : D

Altri suggerimenti

Io non sono un esperto di cose NET, ma è necessario il client nativo SQL (SQLNCLI) per gestire il failover. "Ado.net" può essere SQLOLEDB

Fino a Windows Server 2003, almeno non è installato per impostazione predefinita. E 'sia stand-alone o parte di strumenti client SQL, così ho il sospetto che si sta utilizzando SQLOLEDB

Dopo aver interrotto la preside, ha verificato che il failover in realtà è diventato il preside? Se non ha avuto il failover automatico sul server SQL, quindi è lo specchio è ancora uno specchio.

Abbiamo scoperto che questo sarebbe accaduto se non ha ancora dispone di un grande insieme di timeout sufficiente.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top