2017-11-27 1 views
-2

Hallo, ich würde gerne wissen, gibt es eine Möglichkeit, eine Rollback-Kopie einer Tabelle in SQL Server nur für den Fall, dass ich falsch einfügen oder update statement Ich möchte meine Daten wiederherstellen, wie sie vor dem Einfügen oder Aktualisieren von Anweisungen waren.Wie erstellt man eine Rollback-Kopie einer Tabelle nur für den Fall, dass ich falsch einfügen oder aktualisieren

+0

Warum mit einem Rollback innerhalb einer Transaktion setzen Sie Ihr Skript nicht, bis Sie das richtige Skript erhalten? Es ist wirklich nicht notwendig, eine Kopie der gesamten Tabelle dafür zu erstellen. –

+0

Ich habe mein Skript in eine Transaktion eingefügt und es läuft gut, aber aus Sicherheitsgründen brauche ich eine Kopie meiner Tabelle. – deep

+1

Der Rollback ist Ihr Sicherheitsnetz. Wenn Sie keine Kopie Ihrer Tabelle erstellen können, dann sehen Sie sich SELECT INTO an. –

Antwort

0
SELECT * 
    INTO myBackupTableName 
    FROM Yourtable 

Erstellt eine Sicherung der Tabelle.

0

Angenommen, wir diskutieren eine Produktionsumgebung und Arbeitsbelastung: Je mehr ich über diese Frage/Anforderung nachdenke, desto stärker glaube ich Rollback ist die beste Antwort.

Fasst Vorschläge bereits gemacht:

Wählen Sie in ein Backup-Tabelle erstellen eine Kopie der Tabelle erstellen, aber wenn Sie es zufällt Sie möglicherweise sein, Daten von anderen Benutzern oder Chargen zu verlieren.

Mit der into-Klausel aus einer Select- oder Update-Anweisung erhalten Sie die geänderten Zeilen, aber nicht den ursprünglichen Wert.

Eine andere Antwort wäre, eine Audit-Tabelle zu erstellen und einen Trigger zu verwenden, um sie zu füllen. Ihre Audit-Tabelle muss genügend Details zu dem Batch enthalten, um ihn für das Rollback zu identifizieren. Dies könnte zu einem ziemlichen Kaninchenloch werden. Sobald Sie den Trigger für die Basistabelle und die Audit-Tabelle haben, müssen Sie den Code erstellen, um diese Audit-Tabelle zu verwenden, um Ihren Batch zurückzusetzen. Der Trigger könnte zu einem Leistungsproblem werden, und wenn die Datenbank genügend Änderungen von genügend anderen Benutzern aufweist, können Sie den Batch nicht zurücksetzen, ohne die Arbeit anderer Benutzer zu verlieren.

Sie können Ihr Update und Ihren Validierungscode in denselben Prozess einbinden. Wenn die Validierung fehlschlägt, werden nur Ihre Änderungen rückgängig gemacht.

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-transaction-transact-sql

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql

Verwandte Themen