Es gibt Zeiten, in denen Sie Daten auf Prod korrigieren müssen, die auf anderen Servern nicht vorhanden sind. Dies ist nicht nur auf Fehler zurückzuführen, sondern kann auch auf den Import von Daten aus einer von einem Client gesendeten Datei zurückzuführen sein, die falsch war, oder auf ein Problem, das durch einen Hacker in Ihr System verursacht wurde. Oder aufgrund eines Problems, das durch eine fehlerhafte Dateneingabe verursacht wurde. Wenn Ihre Datenbank groß oder zeitkritisch ist, haben Sie möglicherweise nicht die Zeit, die neueste Sicherung wiederherzustellen und auf dev zu reparieren.
Ihre erste Verteidigung (und etwas, worauf keine Unternehmensdatenbank verzichten kann!) Sind Audittabellen. Sie können sie verwenden, um fehlerhafte Datenänderungen zurückzusetzen. Darüber hinaus können Sie Skripts schreiben, um Daten auf den vorherigen Status zurückzusetzen und auf anderen Servern zu testen, lange bevor Sie die überwachten Daten wiederherstellen müssen. Dann besteht das einzige Risiko darin, dass Sie die richtigen Datensätze identifiziert haben, die wiederhergestellt werden sollen.
Als Nächstes sollten alle Skripte zum Ändern von Produktionsdaten Folgendes enthalten:
Sie sollten sich in expliziten Transaktionen befinden und einen TRY-Catch-Block haben.
Sie sollten einen Testmodus haben, mit dem Sie die Änderungen rückgängig machen können, nachdem Sie gesehen haben, was sie gewesen wären. Sie sollten eine ausgewählte Anweisung von vor der Änderung und eine Ausführung nach der Änderung haben, um sicherzustellen, dass die Änderung korrekt war. Das Skript sollte sicherstellen, dass die Anzahl der verarbeiteten Zeilen angezeigt wird. Wir haben einige davon in einer Vorlage voreingestellt, die sicherstellt, dass die Teile fertig sind. Mit Vorlagen für Änderungen können Sie Zeit sparen, wenn Sie das Update schreiben.
Wenn eine große Datenmenge geändert oder aktualisiert werden muss, sollten Sie das Skript so schreiben, dass es in Stapeln mit Festschreibungen für jeden Stapel ausgeführt wird. Sie möchten nicht das gesamte System sperren, während Sie eine Million Datensätze reparieren. Wenn Sie große Datenmengen reparieren müssen, stellen Sie sicher, dass ein DBA oder eine Person, die mit der Leistungsoptimierung vertraut ist, das Skript vor dem Ausführen überprüft und wenn möglich außerhalb der Geschäftszeiten ausführt.
Als nächstes werden alle Skripte, um irgendetwas in der Produktion zu ändern, Code überprüft und in die Quellcodeverwaltung gestellt. Alle - ausnahmslos.
Schließlich sollten Entwickler diese Skripte nicht ausführen. Sie sollten von dbas oder einer Konfigurationsverwaltungsgruppe ausgeführt werden. Wenn Sie keines von beiden haben, sollten nur Leute, die technologisch führend oder höher sind, das Recht haben, Dinge auf Prod auszuführen. Je weniger Leute Dinge auf Stacheln laufen lassen, desto einfacher ist es, ein Problem aufzuspüren. Skripte sollten so geschrieben werden, dass sie einfach ausgeführt werden, keine Teile hervorheben und schrittweise ausgeführt werden. Es ist das Hervorhebungsmaterial, das Menschen oft in Schwierigkeiten bringt, wenn sie vergessen haben, die where-Klausel hervorzuheben.