Są chwile, kiedy musisz naprawić dane w Prod, które nie istnieją na innych serwerach. Nie wynika to wyłącznie z błędów, ale może pochodzić z importu danych z pliku, który klient wysłał niepoprawnie, lub z problemu spowodowanego przez włamanie się do twojego systemu. Lub z powodu problemu spowodowanego złym wprowadzeniem danych. Jeśli Twoja baza danych jest duża lub ma krytyczne znaczenie dla czasu, możesz nie mieć czasu na przywrócenie najnowszej kopii zapasowej i naprawienie oprogramowania.
Pierwszą obroną (i czymś, na co nie stać bazy danych Enterprise!) Są tabele kontroli. Możesz ich użyć do wycofania złych zmian danych. Ponadto możesz pisać skrypty, aby przywrócić dane do poprzedniego stanu i przetestować je na innych serwerach na długo przed cofnięciem kontrolowanych danych. Jedyne ryzyko polega na tym, że zidentyfikowałeś prawidłowe rekordy do przywrócenia.
Następnie wszystkie skrypty zmieniające dane dotyczące produkcji powinny zawierać następujące elementy:
Powinny być w jawnych transakcjach i mieć blok TRY Catch.
Powinny mieć tryb testowy, którego można użyć do wycofania zmian po tym, jak zobaczysz, co by to było. Powinieneś mieć wybraną statystykę przed dokonaniem zmiany i jeden przebieg po zmianie, aby upewnić się, że zmiana była poprawna. Skrypt powinien upewnić się, że wyświetlana jest liczba przetworzonych wierszy. Niektóre z tych ustawień są wstępnie skonfigurowane w szablonie, który zapewnia wykonanie części. Szablony zmian pomagają zaoszczędzić czas na pisaniu poprawki.
Jeśli istnieje duża ilość danych do zmiany lub aktualizacji, zastanów się nad napisaniem skryptu, aby działał partiami z zatwierdzeniami dla każdej partii. Nie chcesz blokować całego systemu podczas naprawy miliona rekordów. Jeśli masz duże ilości danych do naprawienia, upewnij się, że dba lub ktoś, kto jest przyzwyczajony do dostrajania wydajności, sprawdza skrypt przed uruchomieniem i działa w godzinach wolnych od pracy, jeśli to w ogóle możliwe.
Następnie wszystkie skrypty do zmiany czegokolwiek w produkcji są sprawdzane pod kątem kodu i poddawane kontroli źródła. Wszystkie - bez wyjątku.
Wreszcie deweloperzy nie powinni uruchamiać tych skryptów. Powinny być uruchamiane przez dbas lub grupę zarządzania konfiguracją. Jeśli nie masz żadnego z nich, tylko osoby, które są liderami technologicznymi lub wyższymi, powinny mieć prawo do uruchamiania różnych produktów. Im mniej osób uruchamia rzeczy na prod, tym łatwiej jest wyśledzić problem. Skrypty powinny być pisane w taki sposób, aby były po prostu uruchamiane, bez wyróżniania części i uruchamiane krok po kroku. To podkreślanie często sprawia kłopoty ludziom, gdy zapomnieli zwrócić uwagę na klauzulę where.