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
Antwort
SELECT *
INTO myBackupTableName
FROM Yourtable
Erstellt eine Sicherung der Tabelle.
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
- 1. Update nur für den Fall, dass es nicht null ist
- 2. Trigger auf Einfügen, Aktualisieren andere Tabelle aber nur eine Zeile
- 3. Wie füge ich try/außer für den Fall, dass Sex falsch geschrieben ist?
- 4. In eine Informix-Tabelle einfügen oder aktualisieren, wenn vorhanden
- 5. Flask-SQLAlchemy: Wie Sie eine Zeile bedingt einfügen oder aktualisieren
- 6. Tabelle mit JDBC einfügen oder aktualisieren
- 7. Wie kann ich eine verwandte Tabelle einfügen/aktualisieren?
- 8. Wie Sie das "Einfügen oder Aktualisieren von Tabelle ... gegen Fremdschlüsseleinschränkung" stoppen?
- 9. Ich brauche einen Trigger, der beim Einfügen, Aktualisieren oder Löschen eine Tabelle mit den wiederholten Werten einer anderen Tabelle aktualisiert
- 10. Wie erstellt man einen Trigger, der ausgelöst wird, wenn ein Einfügen oder Aktualisieren in einer Tabelle erfolgt?
- 11. Nach Einfügen MySQL Prüfwerte zu aktualisieren oder eine neue Zeile in einer anderen Tabelle einfügen
- 12. Wie erstellt man Audit-History-Tabelle Tabelle
- 13. Aktualisieren/Einfügen in eine Tabelle mit SQLCeResultSet
- 14. Einfügen in eine Tabelle aus einer anderen Tabelle mit Join-Update oder Einfügen von SQL-Server
- 15. Wie erstellt man nur eine Tabelle mit SQLAlchemy?
- 16. T-SQL Einfügen oder Aktualisieren
- 17. Capture einfügen, aktualisieren und löschen Ereignisse auf einer Tabelle Trigger und in eine andere Tabelle einfügen
- 18. Pandas einfügen oder aktualisieren?
- 19. Wie erstellt man eine Oracle SQL-Anweisung im folgenden Fall?
- 20. Aktualisieren Sie eine Tabelle durch Einfügen von Werten aus einer anderen Tabelle SQL Server
- 21. Wie erstellt man eine "globale Variable" mit einer Tabelle?
- 22. Eine Tabelle aus einer anderen Tabelle aktualisieren
- 23. Wie kann ich den SQL-Server fragen, ob ich Berechtigungen für etwas habe? (Einfügen, Aktualisieren usw.)
- 24. Wie erstellt man eine Excel-Tabelle basierend auf einer Textdatei?
- 25. FlatFileItemWriter write header nur für den Fall, dass Daten vorhanden sind
- 26. Wie erstellt man eine Tabelle in mysql für 3 Spalten?
- 27. Einfügen oder Aktualisieren, wenn in mysql vorhanden ist Tabelle
- 28. SQL: einfügen oder aktualisieren Befehl
- 29. Aktualisieren oder Einfügen einer MySQL-Datenbank mit 60 Millionen Einträge
- 30. Wie erstellt man nur den unteren Rand für das Etikett?
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. –
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
Der Rollback ist Ihr Sicherheitsnetz. Wenn Sie keine Kopie Ihrer Tabelle erstellen können, dann sehen Sie sich SELECT INTO an. –