2010-12-26 16 views
23

Estoy usando SqlBulkCopy para restaurar tablas de copias de seguridad xml. Una de las copias de seguridad de la tabla es ~ 200MB grande y tiene muchos registros.Tiempo de espera caducado con SqlBulkCopy

estoy teniendo errores:

Timeout expired. 
The timeout period elapsed prior to completion of the operation or the server 
is not responding. 

Respuesta

31

Es probable que tenga que aumentar el tiempo de espera. Intente aumentar el valor de sqlBulkCopy.BulkCopyTimeout del valor predeterminado, que es de 30 segundos.

+9

un tiempo de espera de 0 significa infinito. –

+4

Gracias por la solución. También he encontrado y probado la reducción de sqlBulkCopy.BatchSize. –

4

Cambie la propiedad CommandTimeout de su objeto SqlCommand.

El atributo Connect Timeout de una cadena de conexión determina durante cuánto tiempo se ejecuta un objeto SqlConnection antes de que deje de intentar conectarse a un servidor.

También cambie la propiedad SqlBulkCopy.BulkCopyTimeout.

27

Hay dos maneras de solucionar este error:

  • Aumentar el tiempo de espera por defecto es de 30 segundos y 0 significa infinito.

    sqlBulkCopy.BulkCopyTimeout = {time in seconds} 
    
  • BatchSize Disminución por defecto se intenta insertar todas las filas en un lote

    sqlBulkCopy.BatchSize = {no of rows you want to insert at once} 
    

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.batchsize.aspx http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.bulkcopytimeout.aspx

+2

Consulte también: "¿Cuál es el tamaño de lote recomendado para SqlBulkCopy?" http://stackoverflow.com/questions/779690/what-is-the-recommended-batch-size-for-sqlbulkcopy –

Cuestiones relacionadas