2012-04-23 40 views
6

Estoy tratando de extender el tiempo de espera de un SqlDataSource más allá de 30 segundos (Parece ser el valor predeterminado). Estoy intentando ejecutar un procedimiento almacenado que debe ejecutarse en 100.000s de registros. Durante los períodos ocupados se agota el tiempo. Estoy usando ASP.NET 4.0 e IIS 6.0 en el servidor de 2003.asp.net C# Problemas de tiempo de SqlDataSource

Mensaje de error: Tiempo de espera caducado. El período de tiempo de espera transcurrido antes de la finalización de la operación o el servidor no responde.

he intentado en vano para extender el tiempo de espera:

< 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; 
    } 

Cualquier ayuda sería muy apreciada.

Gracias

Respuesta

3

El tiempo de espera generalmente se establece en la cadena de conexión. Ver http://www.connectionstrings.com/ para ver ejemplos completos.

+0

1 - Estaba básicamente escribiendo esto. – Tejs

+0

Hola, tengo lo siguiente en mi web.config: Connection Timeout = 180 – user1024416

0

Tiempo de espera de conexión/Tiempo de espera de conexión/Tiempo de espera Valor predeterminado: 15 segundos El tiempo (en segundos) de espera de una conexión con el servidor antes de finalizar el intento y generar un error. Los valores válidos son mayores que o igual a 0 y menor o igual 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

Gracias por las respuestas rápidas. Tengo lo siguiente en mi web.config: Connection Timeout = 180 – user1024416

1

Es necesario para asegurar tanto su CommandTimeout y se fijan sus ConnectionString 's Connect Timeout para evitar que se agote el tiempo de larga - ejecutar los procedimientos almacenados. Si no establece el tiempo de espera de la conexión, tendrá un tiempo de espera antes de que el procedimiento almacenado finalice, incluso si el comando de procedimiento almacenado no ha agotado el tiempo de espera.

+0

Gracias por las respuestas rápidas. Tengo lo siguiente en mi web.config: Connection Timeout = 180 – user1024416

9

Hay dos tipos de tiempo de espera: ConnectionTimeout y CommandTimeout:

ConnectionTimeout determina el tiempo máximo que su aplicación va a esperar para establecer una conexión con el servidor.

CommandTimeout: Tiempo máximo permitido para la ejecución de un comando.

Asegúrese de establecer ambos. En el Comand:

command.CommandTimeout = 300; 

Nota: Esto se puede implementar en caso Selecting debe su comando de ser parte de un origen de datos. e.command.CommandTimeout = 0; Un valor de 0 significa esperar indefinidamente.

Y cadena de conexión:

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

O:

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

Nota: Pruebe a establecer el tiempo de espera de cadena de conexión en todo el mundo, tal vez en su archivo de configuración.

+0

Hola, tengo lo siguiente en mi web.config: Connection Timeout = 180 – user1024416

+0

Cool, bombea hasta 500 solo para fines de prueba y ver. – Ulises

0

el tiempo máximo de espera de conexión valor puede ser 2147483647. intentar aumentar el valor de tiempo de espera de conexión en la cadena de conexión en su Web de configuración de la siguiente manera

<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

Y añada ' 'into the' ' –

-1

Hay un tiempo de espera tanto para el SQL y la respuesta de la página hora.

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

Como mencionado here, esto funcionó para mí.

puede aumentar el tiempo de espera de la propiedad como esta

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

Configuración del tiempo límite a 0 significa que no hay tiempo de espera

Cuestiones relacionadas