Stellen Sie sich vor, Sie verkaufen eine Anwendung, die ihre Daten in einer Microsoft Sql Server-Datenbank speichert. Einige Kunden sind große Unternehmen mit bestehenden Sql-Installationen und Mitarbeitern, die diese unterhalten. Andere Kunden sind kleine Unternehmen, die die SQLEXPRESS-Version von einem Setup-Programm installieren lassen.
Die Datenbank wird bald viele wichtige Daten enthalten und muss gesichert werden. Wessen Verantwortung ist das?
Soll die Anwendung eine Benutzeroberfläche zum Sichern der Datenbank enthalten und warnen, wenn die Sicherung nicht ausgeführt wurde?
Oder sollte die Anwendung nur Anweisungen für die Sicherung in ihrer Dokumentation enthalten?
Oder ist das ein Problem für die Kunden zu lösen und nicht die Programmierer?
Wenn Sie Software erstellen, die SQLExpress installiert, sollten Sie die Sicherungsfunktionalität bereitstellen. Standardmäßig ist SQLExpress nicht in Management Studio enthalten, und ich würde es als großes Usability-Problem betrachten, Management Studio als Teil Ihrer App zu installieren (oder bitten Sie den Kunden, dies zu tun).
Der Befehl BACKUP DATABASE
kann einfach von Ihrer Anwendung aus ausgeführt werden. Es gibt wirklich keinen Grund, nicht diese Funktionalität bereitzustellen.
Bei Kunden, die IT-Mitarbeiter haben, können sie die Backups selbst mit ihrem vorhandenen Prozess bearbeiten.
Jeder gewinnt.
In den meisten Fällen würde ich erwarten, dass der Kunde Backups übernimmt, ohne die Programmierer zu involvieren. Es ist natürlich nichts falsch, wenn der Kunde Sie als Programmierer bittet, Backup-Erinnerungen in die Anwendung zu erstellen.
In einigen Fällen, in denen der Kunde wenig oder gar kein Verständnis für die Technologie hat, die er verwendet, denke ich auch, dass es unsere Verantwortung als Systementwickler ist, sie über das zu informieren, was sie in Bezug auf Wartung erwarten.
Selbst bei professionellen Kunden gebe ich oft Mindestanforderungen an die Sicherung in der Dokumentation an, einfach weil Sie bekommen, wonach Sie fragen.
Es liegt in der Verantwortung des Kunden. Jedoch ...
Ich glaube, Sie haben drei Möglichkeiten:
Einer oder alle drei können verwendet werden. Es hängt alles davon ab, mit was der Käufer und der Verkäufer zufrieden sind.
Aus meiner Erfahrung hängt viel davon ab, wie die Datenbank installiert und mit der Anwendung verpackt wird. Wenn Sie eine Anwendung an einen Kunden verkaufen, bei dem die Details zur Implementierung der Datenbankebene ausgeblendet oder abstrahiert sind, besteht die typische Kundenerwartung darin, dass eine Sicherungslösung als Teil der Software bereitgestellt wird. Diese Erwartung gibt es aus einer Vielzahl von Gründen.
Ganz oben in meinem Kopf, einer davon ist, dass die IT-Abteilung, die die Anwendung unterstützt, nicht sicher sein kann, wie die Sicherung der Datenbank für die Anwendung erfolgen soll. Manchmal kann ein DB-Dump bei einigen Anbietern Sperrprobleme verursachen, die den normalen Anwendungsbetrieb unterbrechen. Ich bin sicher, dass Sie sich andere Beschwerden vorstellen können, die eine IT-Abteilung für eine Anwendung haben könnte, die eine DB bündelt.
Wie bei Installationen, die eine Verbindung mit einer vorhandenen Datenbank herstellen, denke ich, dass vernünftigerweise davon auszugehen ist, dass die DB-Administratoren für diese Datenbanken Sicherungen durchführen. Es ist jedoch sehr wichtig, dass Sie - der Anwendungsanbieter dokumentieren, was gesichert werden muss. Gibt es Sequenzen und Indizes, deren genaue Reihenfolge beibehalten werden muss? Werden Terabytes an Daten erstellt, die für den Kunden möglicherweise nicht wichtig sind, wenn sie verloren gehen? Was ist mit dem Status der Anwendung während der Sicherung (wie oben erwähnt)? Muss die Anwendung heruntergefahren werden?
Problematischer ist die Wiederherstellung. Was ist, wenn eine teilweise Wiederherstellung von Daten benötigt wird? Wie könnte dies Ihren Datenspeicher beschädigen? Speichert Ihre Anwendung Daten irgendwo anders (Dateien, Netzwerk), die aufgrund einer historischen Sicherung in einen unzuverlässigen / beschädigten Zustand versetzt werden können?
Wie auch immer, eine lange Geschichte kurz gesagt - wenn ich ein Kunde bin, fühle ich mich viel besser, wenn ich weiß, dass der Hersteller der Anwendung den Backup / Restore-Prozess überprüft und Unterstützung anbietet. Eigentlich war das eine Anforderung eines großen Kunden meines aktuellen Projekts. Sie waren mehr als fähig, eine Datenbank zu verwalten, sie wollten vielmehr, dass wir die Verantwortung für unsere eigenen Daten übernehmen und garantieren, dass der Prozess fehlerfrei ist.
Am Ende kann Ihre Laufleistung je nach Implementierung, Anforderungen und Branchenerwartungen Ihrer spezifischen Anwendung variieren.
Meine persönliche Meinung ist, dass Anweisungen für die Sicherung der Daten wirklich wichtig sind. Die meisten Kunden sollten in der Lage sein, Backups selbst zu erstellen, ohne eine GUI zu benötigen, und eine GUI kostet Zeit und Geld, um sich zu entwickeln.
Wenn Sie Anweisungen für die Sicherung bereitstellen, stellen Sie sicher, dass sie wissen, was sie tun müssen, und dass sie dafür verantwortlich sind. Gute Anleitungen werden (hoffentlich) auch den Umfang der Unterstützung verringern, die sie benötigen :) Die meisten nicht-technischen Benutzer, die ich heutzutage kenne, wissen zumindest, dass sie ihre wichtigen Dokumente auf CDs sichern müssen, mit einigen Anweisungen, die sie sichern sollten ihre Datenbank selbst.
Ich denke, eine GUI für Backups ist nur bei besonderen Anlässen wichtig, wo die Benutzer technisch überhaupt nicht kompetent sind, Datensicherheit ist wichtig und die Benutzer haben keinen Zugang zu IT-Mitarbeitern (oder wollen dafür Geld ausgeben).
Wenn die Anwendung ausgeführt wird, löst eine Sicherung das Problem "Wie bekomme ich meine Daten zurück, die ich versehentlich gelöscht habe?", aber es löst nicht das Problem einer abgestürzten Festplatte. Ihre App wird nicht dafür sorgen, dass das Backup auf Band geht und das Band außerhalb der Site ordnungsgemäß gespeichert wird. Seien Sie Teil der besten Lösung, die sie dazu zwingt, eine gewisse Verantwortung für ihre Daten zu übernehmen. Führen Sie sie nicht in ein falsches Sicherheitsgefühl, da sie ein Meldungsfeld erhalten haben, das angibt, dass die Sicherung abgeschlossen ist.
Wenn Sie SQL Server Express bereitstellen, ist es wichtig, die Notwendigkeit einer Sicherung mit Ihren Kunden zu besprechen (natürlich nur, wenn das möglich ist).
Eine Reihe von Leuten hier hat vorgeschlagen, dass Sie die Benutzer IT mit dem Problem beschäftigen lassen. Dies ist natürlich vollständig gültig, aber es hat das inhärente Problem, dass eine besorgniserregende Anzahl von IT-Support-Mitarbeitern keine Ahnung von Datenbankadministrator und noch weniger Idee, wie man eine gute Backup-Strategie implementieren kann.
Überlegen Sie sorgfältig die Bedürfnisse Ihrer individuellen Kunden und fügen Sie vielleicht automatische Backups als Ergänzung hinzu oder kostenlos, wenn Sie sich großzügig fühlen. Nach all dem ist SQL Express, viele Kunden werden nicht erwarten, etwas über Datenbank-Backups wissen zu müssen.
Tags und Links sql-server database backup