2012-04-23 12 views
6

Sto provando ad estendere il timeout di un SqlDataSource oltre 30 secondi (sembra essere l'impostazione predefinita). Sto cercando di eseguire una stored procedure che deve essere eseguita su 100.000 di record. Durante i periodi di punta, è scaduto. Sto usando ASP.NET 4.0 e IIS 6.0 sul server 2003.asp.net C# SqlDataSource problemi di disallineamento

Messaggio di errore: Timeout scaduto. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde.

Ho cercato inutilmente di estendere il timeout:

< asp:SqlDataSource ID="dsTest" EnableCaching="true" CacheDuration="604800" runat="server" ConnectionString="<%$ ConnectionStrings:SuperNARIC %>" SelectCommand="selectStatus" SelectCommandType="StoredProcedure" onselecting="dsTest_Selecting" > 
    <SelectParameters> 
     < asp:ControlParameter ControlID="ddlCar" Name="CountryID" PropertyName="SelectedValue" Type="Int32" /> 
    < /SelectParameters> 
< /asp:SqlDataSource> 



protected void dsTest_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     e.Command.CommandTimeout = 300; 
    } 

Qualsiasi aiuto sarebbe molto apprezzato.

Grazie

risposta

3

Il timeout è generalmente impostato nella stringa di connessione. Vedi http://www.connectionstrings.com/ per gli esempi completi.

+0

1 - Stavo solo fondamentalmente scrivendo questo. – Tejs

+0

Ciao, ho il seguente nel mio web.config: Timeout di connessione = 180 – user1024416

0

Timeout connessione/Timeout connessione/Timeout Valore predefinito - 15 sec Il periodo di tempo (in secondi) per attendere una connessione al server prima di terminare il tentativo e generare un errore. I valori validi sono maggiori o uguali a 0 e minore o uguale a 2147483647.

string myconstr = "Data Source=(local);Initial Catalog=AdventureWorks;" 
    + "Integrated Security=SSPI;Connection Timeout=30" 

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.100).aspx

+0

Grazie per le risposte veloci. Ho il seguente nel mio web.config: Connection Timeout = 180 – user1024416

1

È necessario garantire sia la vostra CommandTimeout e sono insieme S' Connect Timeout tuoi ConnectionString per evitare timeout sul lungo -running stored procedure. Se non si imposta il timeout della connessione, verrà eseguito il timeout prima del termine della stored procedure, anche se il comando della stored procedure non è scaduto.

+0

Grazie per le risposte veloci. Ho il seguente nel mio web.config: Connection Timeout = 180 – user1024416

9

Ci sono due tipi di timeout: ConnectionTimeout e CommandTimeout:

ConnectionTimeout determina il tempo massimo la vostra applicazione sarà l'ora di stabilire una connessione al server.

CommandTimeout: Tempo massimo consentito per l'esecuzione di un comando.

Assicurarsi di aver impostato entrambi. Nel Comand:

command.CommandTimeout = 300; 

Nota: Ciò può essere implementato in caso Selecting dovrebbe tuo comando essere parte di un DataSource.Un valore di 0 significa attendere a tempo indeterminato.

E stringa di connessione:

SqlConnectionStringBuilder cs = new SqlConnectionStringBuilder(connectionString); 
cs.ConnectTimeout = 300; 

Oppure:

<add name="MyConnectionString" connectionString="Data Source=.\SQLEXPRESS; Database=MyDB; Integrated Security=True;Pooling=True;connection timeout=30" providerName="System.Data.SqlClient" /> 

Nota: Prova a impostare il timeout stringa di connessione a livello mondiale, forse nel file di configurazione.

+0

Ciao, ho il seguente nel mio web.config: Timeout di connessione = 180 – user1024416

+0

Cool, pomparlo fino a 500 solo per scopi di test e vedere. – Ulises

0

il tempo massimo di connessione in uscita Valore può essere 2147483647. provare a impostare la connessione valore di timeout nella stringa di connessione nel vostro Web Config come di seguito

<connectionStrings> <add name="ConnectionString" connectionString="Data Source=144681;Initial Catalog=Customer;Persist Security Info=True;User ID=xxxxx;Password=yyyyy" providerName="System.Data.SqlClient" /> </connectionStrings>

+1

E Aggiungi ' '' in ' –

-1

C'è un timeout sia per lo SQL e la risposta della pagina tempo.

Server.ScriptTimeout = 120; 
e.Command.CommandTimeout = 120; 
5

Come detto here, questo ha funzionato per me.

è possibile aumentare la proprietà Timeout come questo

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
     { 
      e.Command.CommandTimeout = 0; 
     } 

Impostazione del timeout a 0 significa nessun timeout

Problemi correlati