2010-12-28 5 views
2

Ich habe eine C# -Anwendung, die im Wesentlichen ein Front-End für eine Datenbank ist, die die Vermietung von Immobilien verwaltet. Die Datenbank entwickelt sich jedoch zusammen mit der Software und muss manchmal aktualisiert werden.Aktualisieren der Datenbank während der Installation

Ich möchte in der Lage sein, die Datenbank vom Installer zu aktualisieren, anstatt eine Reihe von SQL-Dateien und die MSI bereitzustellen. Ich habe darüber nachgedacht, es in den Start des Programms zu schreiben, aber das könnte einige komische Dinge verursachen, wenn zwei Leute das Programm zur gleichen Zeit starten. Das Programm ist auf einem einzigen Server installiert, und dann lief Remote meine mehrere Leute, so dass das Update im Installer nicht diese Leute haben würde.

Wie kann ich die Datenbank während einer Installation des Programms aktualisieren?

Antwort

0

Das Aktualisieren einer Produktionsdatenbank mit einer Endbenutzerinstallation kann riskant sein, wie Sie festgestellt haben. Hier sind ein paar Optionen:

  1. Wenn Sie nicht vorhanden für die Installation sein kann, können Sie Ihre Kunden anweisen, Sie für die Installation zu kontaktieren, damit Sie sie durch den Prozess gehen kann.

  2. Zukünftige Revisionen enthalten eine spezielle Tabelle in der Datenbank. Wenn die Installation beginnt, schreiben Sie einen Datensatz in diese Tabelle, der angibt, dass ein Upgrade durchgeführt wird. Lassen Sie keine Clients eine Verbindung herstellen, während die Installation ausgeführt wird.

  3. Die vorhandene Produktionsdatenbank nicht überschreiben. Stellen Sie Ihre neue Datenbank stattdessen über ein Skript auf dem Server wieder her, und verwenden Sie dann einen SSIS-Prozess, um Daten aus der vorherigen Version der Datenbank in die neue Datenbank zu verschieben. Dies ist jedoch eine gute Idee, um vor einem Installationsfehler zu schützen, der die Produktionsdatenbank beschädigt.

+0

Was ist ein SSIS? – Malfist

+0

http://en.wikipedia.org/wiki/SQL_Server_Integration_Services – Chad

0

Ich erinnere mich an eine Anwendung geerbt, die eine ähnliche Situation konfrontiert, der Programmierer, schrieb die App aus zwei Felder in der Datenbank, eine - die aktuelle Versionsnummer vor jedem Installer ausgeführt wurde überprüfen die Versionsnummer, wenn die Datenbank hatte eine höhere Version als der Installer versuchte, die Installation würde abgebrochen, zweitens, in der gleichen Tabelle, die die Version/den Build speicherte, eine andere Spalte speicherte den Zustand der Datenbank, dh Betrieb/Upgrade in Prozess usw., also wenn die Version # war älter, das war die zweite Überprüfung, wenn eine Installation bereits im Gange war, würde der zweit gestartete Installer abbrechen. Selbst bei sehr kurzen gleichzeitigen Starts würde einer der Installateure zuerst die Sperre erhalten.

edit: von abort etc, ich meine der db-teil der upgrade würde nicht laufen.