Я изучаю SqlClient SqlBulkCopy в ADO.Net и задаю следующие вопросы.
Что произойдет, если в ходе операции SqlBulkCopy произошла сетевая ошибка, выполняемая в рамках транзакции по огромному количеству записей?
Будет ли транзакция оставлена открытой (ни совершенной, ни откатной) на сервере, пока мы ее не убьем вручную?
Каков наилучший способ отправки большого количества записей в двух таблицах данных (InvoiceHeader, InvoiceDetails) в DataSet в соответствующие таблицы SQL Server (InvoiceHeader, InvoiceDetails)?
Спасибо.
РЕДАКТИРОВАТЬ:
Несколько деталей, которые я хотел добавить, но забыл:
Это для .Net v3.5; Я использую Enterprise Library для всех взаимодействий с базами данных.
Предполагая, что вы используете TransactionScope, понимаете, что нет , транзакция не останется открытой, потому что SQL Server обнаружит внешнюю транзакцию и автоматически закроет. Это означает, что худший случай заключается в том, что транзакция истекает, откатываясь назад. Вы можете изменить привязку транзакции, чтобы указать, что делать в случае тайм-аута (вы, вероятно, хотите явно отключить).