2012-04-11 3 views
2

Nachdem ein bcp-Ausgabebefehl von tsql seine Arbeit ausgeführt hat (Export einer Datei), möchten Sie im Allgemeinen die Quelle anschließend bereinigen. Dazu gehört normalerweise das Abschneiden der Quelltabelle oder das Setzen eines Flags, dass die Datensätze tatsächlich verarbeitet werden.Setzen Sie bcp in eine Transaktion mit einer anderen tsql-Anweisung

Wenn Sie nicht aufräumen, wird der nächste Export natürlich die alten und bereits exportierten Zeilen enthalten.

Meine Experimente zeigen, dass Sie ein BCP nicht innerhalb einer Transaktion platzieren können. Es ist meine Annahme, dass es ein Tool außerhalb des Prozesses ist und nicht der initiierenden Transaktion beitritt (korrigiere mich, wenn ich mich bitte irre).

Die Frage ist, ob es möglich ist, diese 2 Aktionen als eine Arbeitseinheit auf eine andere Weise durchgeführt werden? Entweder scheitert es zusammen, sie sind gemeinsam erfolgreich.

Ich hatte gehofft, es gab eine "post action", die Sie an bcp weitergeben konnten, so dass bcp selbst eine Transaktion wie begaviour garantieren konnte.

Danke für die Ideen, Tom

Antwort

0

Wie wäre es dieses: Flag alle Zeilen durch ihre PK-IDs in einen Bearbeitungstisch zu schreiben. Als nächstes führen Sie den BCP mit xp_cmdshell aus und prüfen Sie auf Fehler (see this article for an example). Wenn alles gut läuft, suchen Sie mit Hilfe der Verarbeitungstabelle die ursprünglichen Zeilen, die gelöscht werden sollen. Andernfalls löschen Sie diese Verarbeitungstabelle und Sie können es erneut versuchen.

Verwandte Themen