2013-02-12 18 views
5

Voglio rendere veloce una connessione di database al mio SQL Server. Come posso ridurre il timeout? Ho provato ad aggiungere Connection Timeout=1 nella mia stringa di connessione, tuttavia questo non sembra fare la differenza.Come si riduce il timeout di connessione con Entity Framework?

Con Connection Timeout=500, sono necessari circa 8 minuti e 30 secondi per il timeout. Questo è previsto. Con Connection Timeout=1, ci vogliono circa 40 secondi per scadere, il che è molto più lungo del previsto.

Ho trovato la proprietà EntityConnection.ConnectionTimeout ma è di sola lettura. C'è altro che posso fare per ridurre questo timeout? Si tratta di un problema con Entity?

UPDATE: Ecco la mia stringa di connessione. Richiede ancora ~ 40 secondi per il timeout.

<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1&quot;" providerName="System.Data.EntityClient" /> 

UPDATE 2: Così ho scoperto che il timeout era un timeout tcp, non un sql collegare timeout. Se la mia macchina fosse in grado di raggiungere l'host, la soluzione di @marc_s avrebbe funzionato, tuttavia, poiché non riesco a raggiungere l'host, entra in gioco il timeout del tcp. Qualcuno sa come ridurre il timeout TCP per un SqlConnection?

+0

È possibile specificarlo nella stringa di collegamento –

+0

Si prega di inviare la stringa di connessione? – IronMan84

+0

L'aggiornamento 2 è corretto. Sul mio dev locale ho definito un alias (usando TCP). Il timeout della stringa di connessione funziona ma richiede più tempo di quello impostato nella stringa di connessione quando raggiungo il server utilizzando alias. Se cambio il nome di Data Source al vero nome (non l'alias) allora Connection Timeout = 1 funziona come previsto. Grazie. –

risposta

0

inserire il seguente codice nel costruttore della classe DbContext:

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 1; 
+4

Questo è il ** timeout del comando ** - l'intervallo di tempo che un comando in esecuzione può utilizzare prima che scada. Questo NON ha ** NULLA ** da fare con ** timeout della connessione ** (il tempo massimo consentito per la ** connessione ** al database da aprire) –

+0

Come su un'impostazione web.config? Qualcosa che può essere cambiato senza una ricompensa completa e pubblicare. – Triynko

1

Dove e come hai fatto a specificare che timeout di connessione?

Ho appena provato e aggiunto questo alla mia stringa di connessione EF (EF utilizzando database prima) - e funziona come previsto: con il servizio SQL Server arrestato, la connessione tenta time out quasi immediatamente ....

<add name="myEntities" 
    connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient; 
      provider connection string=&quot;data source=.;initial catalog=mydb; 
      integrated security=True;connect timeout=1;multipleactiveresultsets=True; 
             ***************** 
      App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

(stringa di connessione EF rotto e avvolto per chiarezza - questo sarà solo una lunga riga nel web.config)

è necessario aggiungere connect timeout=x (dove x è espresso in secondi, un valore più grande di 0 è ok) all'interno del valore del valore della stringa di connessione EF.

+0

Cosa fa la voce 'multipleactiveresultsets'? Inoltre, che tipo di database ti stai collegando con questa app.config? – bsara

+0

@Brandon: questo è per SQL Server (2005 o successivo). Il 'multipleactiveresultsets' è opzionale - consente più connessioni' SqlDataReader' allo stesso tempo –

+0

Mi capita di lavorare con Blaine su questa domanda e sapere che sta colpendo un server MS SQL Express 2005 ... questo farebbe la differenza a tutti? – bsara

Problemi correlati