Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MSSQL - Datensatz wiederherstellen

Frage Entwicklung Datenbanken

Mitglied: FiVS

FiVS (Level 1) - Jetzt verbinden

08.10.2010 um 12:34 Uhr, 9126 Aufrufe, 7 Kommentare

Welche Möglichkeiten gibt es bei einem Microsoft SQL Server 2005,
einen bestimmten gelöschten Datensatz wiederherzustellen?

Hallo an alle,

ich nutze einen Microsoft SQL Server 2005 auf dem mehrer Datenbanken laufen.
Leider kommt es immer wieder vor das jemand über eine Anwendung versehentlich
einen Datensatz löscht. Die Datenbank wird täglich Abends gesichert.
Um den Datensatz wiederherzustellen gehe ich momentan immer einen
sehr Umständlichen und lang andauernden Weg, da ich es auch nicht besser weiß.

Die Letzte Sicherung als Temporäre Datenbank zurückspielen.
Anhand der Logs den gelöschten Datensatz raussuchen und in die Livedatenbank
überspielen.

Gibt es hier nicht eine einfachere Methode dies durchzuführen?

Ich habe im Netz schon über Transaktionprotokoll und Snapshots gelesen.
Soweit ich das aber verstehe kann man damit nur zu einem bestimmten Zeitpunkt
zurückkehren, nicht aber einen bestimmten Datensatz zurückholen.

Eine richtige Alternative zu meinem Vorgehen konnte ich noch nicht wirklich finden oder
ich gehe die Sache irgendwie falsch an.

Ich bin für jede Anregung, jeden Link und Lektüre zu diesem Problem dankbar.
Mitglied: SlainteMhath
08.10.2010 um 12:56 Uhr
Moin,

eine Möglichkeit wäre es einen Trigger ON DELETE anzulegen, der den Datensatz in eine andere Tabelle wegkopiert, bevor er gelöscht wird. Das erfordert allerdings schon ein bischgen Ahnung von T-SQL und vorallem von der Anwendung.

Transaktionslogs bringen, wie du schon selbst festgestellt hast, nichts da man nicht gezielt einzelne Datensätze zurückholen kann.

Ansonsten: Den Anwendern anständig auf die Finger klopfen (lassen) - wie kann man mehrmals (!) aus versehen einen Datensatz löschen? *kopfschüttel*

lg,
Slainte
Bitte warten ..
Mitglied: maretz
08.10.2010 um 13:31 Uhr
Moin,

das Transaktions-Log bringt nichts. Es ist ja lediglich dafür da das eine unterbrochene Aktion rückgängig gemacht werden kann... Dein Löschen wurde aber ja vermutlich dann erfolgreich abgeschlossen ;)

Habt ihr selbst die Anwendung erstellt? In dem Fall würde ich das so machen das man einfach die Anwendung abändert. Ein "Deleted-Flag" einbauen, das auf 1 setzen wenn es gelöscht wurde und gut ist... Das kann sogar der Anwender selbst machen wenn man das entsprechend in die Anwendung einbaut
Bitte warten ..
Mitglied: Biber
08.10.2010 um 13:50 Uhr
Moin vschmidt,

ich würde dir ein noch radikaleres Vorgehen als meine beiden geschätzten Vorposter empfehlen.

Wenn denn so ein Aus-Versehen-Löscher um die Ecke biegt mit "Ich habe gestern, als ich angeregt mit meiner Frau telefoniert habe, den Datensatz XY weggebratzt.."
-> "Kein Problem" , sagst du dann, "ich stelle eben eben mal kurz den Datenbankzustand von vorgestern 02:30h wieder her, da war das letzte Full Backup. Und da war der Satz doch bestimmt noch vorhanden, oder?"

Und die anderen 157.000 Anwender, die daraufhin die Dateneingaben von heute und gestern nacharbeiten müssen, denen gibst du seine Telefonnummer.

Nochmal etwas abstrakter:
a) es gibt keine vorgesehene Möglichkeit, einzelne/bestimmte Datensätze wiederherzustellen
b) und zwar ist es nicht implementiert weil die Datenbank insgesamt konsistent sein muss. Was ist denn, wenn du die Rechnung eines Kunden "wiederherstellst", aber dieser Kunde inzwischen aus dem Kundenstamm entfernt wurde? Oder zwischenzeitlich die Außenstände dieses Kunden in die Quartalberichtserstellung eingeflossen sind?
c) und außerdem: für die Änderung der Dateninhalte hat der oben erwähnte DAU die Rechte und die Verantwortung. Nicht du. Du darfst es gar nicht manipulieren.

Und lass dich nicht von irgendwelchen Flurbekanntschaften zu so etwas überreden. Du manipulierst produktive Daten (weil du zufällig DBA bist).
Das ist weder revisionssicher noch professionell.

Grüße
Biber
Bitte warten ..
Mitglied: kaiand1
08.10.2010 um 15:35 Uhr
Am besten ist dabei wenn du vom Löscher einen Antrag hast der beinhaltet das du den Datensatz xyz wiederherstellen sollst.
Das auch mit Unterschrfiten versehen ist vom Vorgesetzten ect...
So gibt es immer nen Nachweis wer was wann gelöscht hat und wiso die Datenbank "manipuliert" wurde.
Bei uns gabs wegen sowas schonmal etwas Ärger da ein Datensatz "abhanden" gekommen ist der offene Überweisungen enthielt.
Und einige Leute waren dann später etwas sauer da die kein Geld bekommen haben...
Bitte warten ..
Mitglied: wiesi200
08.10.2010 um 20:14 Uhr
Ich muss auch sagen dein Problem darf es eigentlich nicht geben.

Du musst da wirklich unterscheiden
Manchne Daten darf einfach keiner löschen können.
Andere dürfen nicht alle löschen können.

Und wenn wiklich jemand was löscht muss er sie einfach wieder selbst eintippen.

Auf Datenbank Ebene eine Anwendung zu manipulieren ist wirklich keine gute Idee.
Bitte warten ..
Mitglied: FiVS
11.10.2010 um 11:45 Uhr
Vielen Dank für eure Antworten und Anregungen.

Eure Antworten bestätigen meine Vermutung, das die Rücksicherung in der Art nicht vorgesehen ist.

Die Anwendung ist nicht von uns, somit können wir hier von der Anwendung aus nicht vorbeugend eingreifen.
Was die Datenbankstruktur angeht, würde ich behaupten dass wir uns hier gut auskennen.

Was die Löschrechte angeht, grenzen wir diese soweit es geht ein, somit haben meist nur zwei Personen
die Möglichkeiten dazu. Und leider schaft es auch der kleine Personenkreis es immer wieder was zu löschen.
Wobei in einigen Fällen, verleiht die die Anwendung vielleicht auch ein wenig zur Fehlbedienung, was den Benutzer natürlich
nicht von seiner Verantwortung entbindet.

Ich bin bei euch, dass meine momentane Vorgehensweise nicht unbedingt der Richtlinie zur Einhaltung der Datenbaknkonsistenz
bzw. der Revisionssicherheit entspricht.

In den bisherigen Fällen, handelte es sich um nicht so kritische Daten, die in eine Verechnung oder so fallen.

Die Frage ist natürlich wie geht man mit sowas um, wenn der Kunde wirklich darauf besteht die Daten zurück zu bekommen.
"Argumentationen wie dafür haben wir doch die Sicherung will jetzt nicht kommentieren"

Einige Vorschläge sind ja schon gefallen..
- Trigger, wäre eine Überlegung wert, zumindest würde dies Zeit einsparen.
- Kunden in die Verantwortung ziehen, ist vermutlich die beste Lösung

Gibt es hier eventuell Rechtliche Grundlagen (Manipulation verboten) auf die man sich berufen kann?
Bitte warten ..
Mitglied: Biber
11.10.2010 um 16:32 Uhr
Moin vschmidt

Die Frage ist natürlich wie geht man mit sowas um, wenn der Kunde wirklich darauf besteht die Daten zurück zu bekommen.
....
Gibt es hier eventuell Rechtliche Grundlagen (Manipulation verboten) auf die man sich berufen kann?
Die zweite Teilfrage kann ich als Nicht-Jurist nicht abschliessend beantworten.
Meiner Meinung nach wird es dafür auch Rechtsverbindliches geben, denn dieses Problem hat mit Sicherheit auch schon bei Anderen zu Konflikten und auch zu Prozessen geführt.
--> Ist aber nur eine sbjektive Überzeugung.

Ansonsten kann ich dir da kein Muster-verhalten empfehlen.
Sagen wir so - wenn du mit deinen Kenntnissen der Tabellenstrukturen und -abhängigkeiten felsenfest davonüberzeugt bist, dass dieser eine anstößige Datendsatz keinerlei Seiteneffekte auf andere Datensätze/Tabellen hat, egal, ob er nun "gelöscht" oder "wiedergestellt" ist und du eine schriftliche Anweisung zu dieser Manipulation seitens des Kundens hast... dann mach es (wenn du willst).
Wenn eines von beiden fehlt, dann lass es auf jeden Fall.

Allerdings... wenn dieser eine Datensatz keine Seiteneffekte auf andere Datensätze hat, egal ob vorhanden oder nicht vorhanden - WTF hat ihn der Aus-Versehen-Löscher nicht einfach wieder neu eingetippselt?

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MSSQL-Zugriffsproblem (3)

Frage von petere zum Thema Datenbanken ...

PHP
Probleme mit PHP und mssql (2)

Frage von Invisan zum Thema PHP ...

Windows Server
MSSQL Arbeitsspeicher Auslastung (6)

Frage von Jabberwocky86 zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...