2015-07-30 3 views
2

Я использую Entity Framework Bulk Insert extension, потому что мне нужно вставить несколько миллионов строк в мой db.Как увеличить период ожидания соединения?

 using (var context = new MyDBContext()) 
     { 
      context.Database.CommandTimeout = 36000; // has no effect 
      using (var tx = new System.Transactions. 
       TransactionScope(TransactionScopeOption.Required, new TimeSpan(0,2,0,0))) 
      { 
       context.BulkInsert(entities); 

сначала я получаю сообщение об ошибке примерно минуту после того, как работа была запущена, и это привело меня, чтобы попытаться увеличить время ожидания от объема сделки, которые я установил два часа. После этого я начал получать другую ошибку:

System.Data.Entity.Core.EntityCommandExecutionException : An error occurred while executing the command definition. See the inner exception for details. ---- System.InvalidOperationException : Invalid operation. The connection is closed.

Это happaned примерно через 10 минут, так что я попытался установить CommandTimeout до одного часа, но это не похоже, чтобы сделать разницу, потому что я все еще получаю ошибку после 10 минут.

+0

Метод расширения BulkInsert имеет перегрузку, которая принимает параметр BulkInsertOptions, который имеет свойство TimeOut. Значение по умолчанию для этого таймаута составляет 30 секунд, поэтому маловероятно, что это вызывает вашу проблему, но это то, что вы можете проверить на всякий случай. – kalthir

ответ

0

Вы также должны настроить таймаут в MSSQL. С помощью SSMS выберите механизм базы данных> щелкните правой кнопкой мыши> Свойства> Соединения> Удаленные подключения к серверу> Тайм-аут удаленного запроса установлен на 0 бесконечное время или 3600 один час.