Управление сбоем сети во время транзакции SqlBulkCopy

ado.net c# sql sqlbulkcopy

Вопрос

Я изучаю SqlClient SqlBulkCopy в ADO.Net и задаю следующие вопросы.

Что произойдет, если в ходе операции SqlBulkCopy произошла сетевая ошибка, выполняемая в рамках транзакции по огромному количеству записей?

Будет ли транзакция оставлена ​​открытой (ни совершенной, ни откатной) на сервере, пока мы ее не убьем вручную?

Каков наилучший способ отправки большого количества записей в двух таблицах данных (InvoiceHeader, InvoiceDetails) в DataSet в соответствующие таблицы SQL Server (InvoiceHeader, InvoiceDetails)?

Спасибо.

РЕДАКТИРОВАТЬ:

Несколько деталей, которые я хотел добавить, но забыл:

Это для .Net v3.5; Я использую Enterprise Library для всех взаимодействий с базами данных.

Принятый ответ

Предполагая, что вы используете TransactionScope, понимаете, что нет , транзакция не останется открытой, потому что SQL Server обнаружит внешнюю транзакцию и автоматически закроет. Это означает, что худший случай заключается в том, что транзакция истекает, откатываясь назад. Вы можете изменить привязку транзакции, чтобы указать, что делать в случае тайм-аута (вы, вероятно, хотите явно отключить).



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему