SQLBulkCopy wird in Verbindung mit Transaction verwendet und löst jedes Mal ein Ereignis aus, wenn ein Stapel kopiert wird

c# sqlbulkcopy sql-server

Frage

Ich lade gerade Daten auf MS SQL Server über SQLBulkCopy und Transaktionen hoch. Ich möchte in der Lage sein, ein Ereignis auszulösen, nachdem jeder Batch hochgeladen wurde (Ich habe bereits versucht SQLRowsCopied-Ereignis und es funktioniert nicht, siehe Zitat unten)

MSDN-Angebot:

Während der Ausführung des Massenkopiervorgangs wird in der Verbindung keine Aktion wie Transaktionsaktivität unterstützt. Es wird empfohlen, nicht dieselbe Verbindung zu verwenden, die während des SqlRowsCopied-Ereignisses verwendet wurde. Sie können jedoch eine andere Verbindung öffnen.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.sqlrowscopied(v=vs.80).aspx

Also kann ich meinen Kuchen im Grunde nicht haben und es essen :( Kennt jemand eine Lösung um dies, wie ich ein Ereignis auslösen möchte, nachdem jede Charge hochgeladen wurde.

Danke für Ihre Hilfe.

Akzeptierte Antwort

Ich habe mich schließlich entschieden, eine interne Transaktion zu verwenden. ATM scheint gut zu funktionieren, wenn ein Fehler auftritt, wird der aktuelle Stapel zurückgesetzt. In Bezug auf Bens Kommentar oben habe ich das versucht, aber es ist nicht möglich, es ist nicht so, als ob es einen Codeabschnitt durchläuft, in dem man ein Event auslösen könnte. Am Ende habe ich die Eigenschaft notifyafter verwendet, die ein Ereignis auslöst, nachdem x Zeilen kopiert wurden, um mein Ereignis zu erhöhen. Wahrscheinlich nicht der beste Weg, es zu tun, aber ich konnte keinen besseren Weg finden. Hoffe jemand findet das nützlich.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum