Управление сбоем сети во время транзакционной SqlBulkCopy - PullRequest
0 голосов
/ 11 апреля 2011

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

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

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

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

Спасибо.

EDIT:

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

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

1 Ответ

1 голос
/ 11 апреля 2011

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

...