Подтвердить что ты не робот

Истекло время ожидания с помощью SqlBulkCopy

Я использую SqlBulkCopy для восстановления таблиц из резервных копий xml. Одна из резервных копий таблицы составляет ~ 200 МБ и имеет множество записей.

У меня ошибка:

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

Ответ 1

Вероятно, вам нужно увеличить таймаут. Попробуйте увеличить значение sqlBulkCopy.BulkCopyTimeout по умолчанию, которое составляет 30 секунд.

Ответ 2

Есть два способа исправить эту ошибку:

  • Увеличение таймаута по умолчанию - 30 секунд, а 0 означает бесконечность.

       sqlBulkCopy.BulkCopyTimeout = {time in seconds}
    
  • Уменьшить BatchSize по умолчанию, он пытается вставить все строки в одну партию

        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

Ответ 3

Измените свойство CommandTimeout вашего объекта SqlCommand.

Атрибут "Время ожидания соединения" строки подключения определяет, как долго выполняется объект SqlConnection, прежде чем он перестанет пытаться подключиться к серверу.

Также измените свойство SqlBulkCopy.BulkCopyTimeout.