2010-12-26 19 views
23

Sto utilizzando SqlBulkCopy per ripristinare le tabelle dai backup xml. Uno dei backup della tabella è grande ~ 200 MB e ha molti record.Timeout scaduto con SqlBulkCopy

sto avendo errore:

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

risposta

31

Probabilmente è necessario aumentare il timeout. Prova ad aumentare il valore di sqlBulkCopy.BulkCopyTimeout dal valore predefinito che è 30 secondi.

+9

un timeout da 0 significa infinito. –

+4

Grazie per la soluzione. Ho anche trovato e testato la riduzione di sqlBulkCopy.BatchSize. –

4

Modificare la proprietà CommandTimeout dell'oggetto SqlCommand.

L'attributo Timeout connessione di una stringa di connessione determina per quanto tempo un oggetto SqlConnection viene eseguito prima che si interrompa il tentativo di connessione a un server.

Modificare anche la proprietà SqlBulkCopy.BulkCopyTimeout.

27

Ci sono due modi per risolvere questo errore:

  • Aumentare Timeout per impostazione predefinita è 30 secondi e 0 significa infinito.

    sqlBulkCopy.BulkCopyTimeout = {time in seconds} 
    
  • Diminuzione BatchSize di default tenta di inserire tutte le righe in un unico lotto

    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

Vedere anche: "Qual è la dimensione del batch consigliata per SqlBulkCopy?" http://stackoverflow.com/questions/779690/what-is-the-recommended-batch-size-for-sqlbulkcopy –

Problemi correlati