Тайм-аут соединения с несколькими вставками – ADO.NET – SQL Server

У меня транзакция с несколькими вставками. Все вставки работают нормально, кроме одного. Я проверил параметры, орфографию, все это, и, похоже, я не понимаю. Это дает мне ошибку:

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

Моя транзакция выглядит так:

 SqlConnection db = new SqlConnection(connString); DataSet dataSet = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); using (db) { db.Open(); SqlTransaction trans = db.BeginTransaction(); try { //insert into COMMSignalDefinition !!Problem HERE da.InsertCommand = new SqlCommand("INSERT INTO COMMSignalDefinition(Name) " + "VALUES (@name)", db, trans); da.InsertCommand.Parameters.Add("@name", SqlDbType.NVarChar); foreach (DataRow row in ds.Tables["COMMTerminalSignal"].Select()) { da.InsertCommand.Parameters[0].Value = row.ItemArray[1]; da.InsertCommand.ExecuteNonQuery(); } // insert into COMMSignalExceptionDefinition -- names da.InsertCommand = new SqlCommand("INSERT INTO COMMSignalExceptionDefinition(Name) " + "VALUES (@name)", db, trans); da.InsertCommand.Parameters.Add("@name", SqlDbType.NVarChar); foreach (DataRow row in ds.Tables["COMMSignalExceptionDef"].Select()) { da.InsertCommand.Parameters[0].Value = row.ItemArray[1]; da.InsertCommand.ExecuteNonQuery(); } trans.Commit(); MessageBox.Show("You have successfully imported your Settings. " + "You can now exit the program.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception e) { trans.Rollback(); MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 

У меня есть больше вложений, которые отлично работают (я удалил остальные), и я перенесли проблему с проблемами в начале. Мой вопрос: что я могу сделать неправильно? Я даже проверил, если «проблемный» запрос отправляется на сервер с помощью SQL Server Profiler, и он это делает! И если я запустил его в SQL Server Management studio , он тоже работает.

Connection Timeout установлено на 30

Можете ли вы, пожалуйста, дать мне несколько потенциальных клиентов? Версия SQL Server – 2005! Спасибо!

Пожалуйста, удалите этот пост. Мне так стыдно, что я … После долгих разрывов, я вышел несколько тестов в Management Studio, где я проверил некоторые транзакции, не совершая их вообще. Так что он ждал фиксации, и я продолжал делать или пытаться вставлять …! Мне стыдно ! Извини за это.

Если это довольно продолжительная операция, вы можете попытаться изменить время ожидания команды .

  1. Проверьте строку подключения. Возможно, у вас есть ошибка в вашем connString var
  2. Проверьте свои тайм-ауты команды SqlDataAdapter. Они могут быть причиной исключения (см. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx ) Обычно такое исключение является результатом либо длительных задач, либо незафиксированные транзакции.

Время ожидания подключения установлено на 1

Свойство SqlConnection.ConnectionTimeout

Время (в секундах ) ожидания открытия соединения. Значение по умолчанию – 15 секунд.

Таким образом, вы установите тайм-аут на 1 секунду. Отвечает ли это на ваш вопрос?

Примечания. Вы можете установить время, в течение которого соединение ожидает тайм-аут, используя ключевые слова ConnectTimeout или время ожидания подключения в строке подключения. Значение 0 указывает на отсутствие ограничения , и его следует избегать в ConnectionString, потому что попытка подключения ждет неопределенно долго.

Давайте будем гением компьютера.