Svaret är JA , du kan få tillbaka det, men det är inte lätt. Alla databaser loggar varje ändring gjorts på den. Du måste:
- Stäng av servern (eller ställ den åtminstone i skrivskyddat läge)
- Ta en fullständig säkerhetskopia av servern
- Få en kopia av alla db-loggfiler som går tillbaka till innan olyckan inträffade
- Återställ säkerhetskopian till en annan server
- Med hjälp av db-administratörsverktyg, rulla tillbaka genom loggfilerna tills du "ångrar" olyckan
- Undersök den återställda koden i den lagrade processen och koda tillbaka den till din nuvarande version
Och viktigast av allt:FÅ DIN LAGRADE PROCEDURKOD UNDER KÄLLEKONTROLL
Många tycker inte om det här konceptet:Du kan bara göra ändringar till en databas; du kan inte återställa den lagrade proc-versionen som du kan med applikationskod genom att ersätta filer med deras tidigare versioner. För att "rulla tillbaka" måste du göra mer ändringar som släpper/definierar din lagrade proc.
Note to nitpickers:Med "roll back" menar jag inte "transaction roll back". Jag menar att du har gjort dina ändringar och bestämmer när servern är säkerhetskopierad att ändringen inte är bra.