SqlServer BCP est-il tout ou rien?

bcp c# sqlbulkcopy sql-server

Question

Nous avons un code critique qui repose sur l'API .NET SqlBulkCopy. Parfois, ce code échouera avec l'erreur suivante:

System.Data.SqlClient.SqlException : l'échec de l'insertion en bloc en raison d'un changement de schéma de la table cible.

Cet article de blog suggère qu'il s'agit d'une erreur passagère, presque inévitable. Ce que je me demande, c'est que, lorsque cette erreur se produit, est-il garanti qu'aucune ligne n'a été insérée (dans ce cas, je peux simplement intercepter cette exception et réessayer l'opération BCP du côté .NET)?

J'utilise SqlServer 2008.

Réponse populaire

Vous devez utiliser le SqlBulkCopy Constructor (SqlConnection, SqlBulkCopyOptions, SqlTransaction) , qui prend un paramètre pour SqlTransaction . Sous cette instance de SqlTransaction copie en SqlTransaction effectue l'opération et, en cas d'échec, vous avez la possibilité de revenir en arrière.

Vous pouvez également voir: Opérations de transaction et de copie en bloc

Les opérations de copie en bloc peuvent être effectuées en tant qu'opérations isolées ou dans le cadre d'une transaction en plusieurs étapes . Cette dernière option vous permet d'effectuer plus d'une opération de copie en bloc dans la même transaction, ainsi que d'effectuer d'autres opérations de base de données (telles que des insertions, des mises à jour et des suppressions) tout en permettant de valider ou d'annuler la transaction dans son intégralité .



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi