質問: .NET SqlBulkCopy APIに依存するいくつかの重要なコードがあります。時々、このコードは次のエラーで失敗します: `System.Data.SqlClient.SqlException : Insert bulk failed due to a schema change of the target table.` このブログ投稿は、これが一時的な、ほぼ防止できないエラーであることを示唆しています。私が疑問に思っているのは、このエラーが発生したときに、行が挿入されていないことが保証されているかどうかです(挿入されている場合は、この例外をキャッチして、.NET側でBCP操作を再試行できます)? SqlServer 2008を使用しています。
回答: あなたは使用する必要があります`SqlBulkCopy Constructor (SqlConnection, SqlBulkCopyOptions, SqlTransaction)`のためのパラメータを取るコンストラクタ、 `SqlTransaction` 。その`SqlTransaction`インスタンスの下で一括コピーは操作を実行し、失敗した場合はロールバックするオプションがあります。 また、 トランザクションと一括コピー操作も表示されます。 > 一括コピー操作は、単独操作として実行することも**、複数ステップトランザクションの一部として**実行することもできます。この後者のオプションを使用すると、同じトランザクション内で複数の一括コピー操作**を実行したり、トランザクション全体をコミットまたはロールバックしたりできる**間に他のデータベース操作(挿入、更新、および削除など) **を実行でき**ます。 > >