2010-10-27 14 views

Respuesta

16

podría configurar el CommandTimeout en la conexión subyacente, pero mucho, mucho, mucho mejor idea sería tomar el tiempo y esfuerzo para diagnosticar por qué el tiempo de espera que está sucediendo en el primer lugar.

Incluso si "resuelve" el problema aumentando su CommandTimeout, podría estar causando otros problemas de bloqueo en su base de datos. Busque las consultas de bloqueo o los planes de consulta pobres, o las tablas e índices mal diseñados en su lugar.

1

Todo lo que haga, aparte de corregir el SQL en el procedimiento almacenado, es simplemente enmascarar el problema real (el SQL).

Necesita hacer una pregunta acerca de la aceleración de su procedimiento, dónde publica sus tablas y el código de procedimiento almacenado para que se pueda arreglar de una vez por todas.

+1

Lo sé, pero para 1 millón de inserciones, no tengo elección ... –

+4

Esa habría sido información muy importante para poner en la publicación original, ¿no crees? –

+1

1 millón de inserciones desde una única llamada a procedimiento almacenado ?? ¿Qué está pasando con eso? –

3
using (var conn = new SqlConnection(ConnectionStrings.toMyDB)) 
{ 
    conn.Open(); 
    using (var cmd = new SqlCommand("myProc", conn)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandTimeout = 30; // Increase this to allow the proc longer to run 
     cmd.Parameters.AddWithValue("@Param", myParam); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

Patrice Pezillier pregunta por el tiempo de espera en EF, y su ejemplo es ADO.NET –

+0

¿Cómo puedo pasar el resultado al DataSet? Ahora estoy con esta tecnología. –

4
 using (var context = new MyDbEntities()) 
     { 
      context.CommandTimeout = 600; 
      context.MyLongRunningStoredProc(); 
     } 
0

mediante índices resuelven mi problema, me enteré de que la ejecución del procedimiento almacenado con ExecuteStoreCommand no tiene el mismo tiempo que en SQL.

Puede utilizar SQL Management Studio para encontrar el índice que necesita, seleccionar el código sql para el procedimiento almacenado, hacer clic con el botón derecho y "Mostrar plan de ejecución estimado" tomar el índice propuesto. Esto debería optimizar su procedimiento almacenado.

Cuestiones relacionadas