Ответ 1
Вероятно, вам нужно увеличить таймаут. Попробуйте увеличить значение sqlBulkCopy.BulkCopyTimeout
по умолчанию, которое составляет 30 секунд.
Я использую SqlBulkCopy для восстановления таблиц из резервных копий xml. Одна из резервных копий таблицы составляет ~ 200 МБ и имеет множество записей.
У меня ошибка:
Timeout expired.
The timeout period elapsed prior to completion of the operation or the server
is not responding.
Вероятно, вам нужно увеличить таймаут. Попробуйте увеличить значение sqlBulkCopy.BulkCopyTimeout
по умолчанию, которое составляет 30 секунд.
Есть два способа исправить эту ошибку:
Увеличение таймаута по умолчанию - 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
Измените свойство CommandTimeout вашего объекта SqlCommand.
Атрибут "Время ожидания соединения" строки подключения определяет, как долго выполняется объект SqlConnection, прежде чем он перестанет пытаться подключиться к серверу.
Также измените свойство SqlBulkCopy.BulkCopyTimeout.