Bereits laufende Datenbank wie am besten ändern?
-
Hey,
ich habe ein kleines Problem. Ich habe eine Software geschrieben, die für die Lagerverwaltung zuständig ist. Dazu wird als Datenbanksystem Access verwendet.
Das Programm läuft perfekt, aber ich würde gerne ein neues Feature hinzufügen. Es soll ein Protokoll geben, welche Aktionen ausgeführt wurden, damit der nächste User weiß, was zuletzt getan wurde.
Das wäre grundsätzlich kein Problem, aber ich müsste dazu an die Datenbank ran und eine neue Tabelle einführen. An dieser Stelle sind wir dann auch beim Problem: Ich möchte ungern die Datenbank zur Modifikation mit nach Hause nehmen und dann wieder aufspielen.
Eventuell könnte ich in meiner in C# geschriebenen Applikation in der neuen Version auch eine Art Install-Routine programmieren, die die benötigten Tabellen neu anlegt, falls noch nicht geschehehen. Diese Routine könnte ich dann bei der nächsten Änderung wieder entfernen.
Wie würdet ihr das lösen? Ideen, Anregungen?
Vielen Dank
-
Du solltest in erster Linie verhindern, dass Daten der Benutzer verloren gehen. Dies wäre wohl der Fall, wenn du die Datenbank zu Hause veränderst und später wieder einspielst. Der Zeitraum dazwischen ist undefiniert Daten, die in diesem Zeitraum geändert worden sind, gehen wohl verloren. Zumindest die Änderungen.
Ich empfehle den Schritt eines Installationsskriptes oder einer Routine.
Diese solltest du allerdings vorher testen, bevor du es an einer Live-Datenbank durchführst.Hierbei reicht im Normalfall ein einfaches SQL-Skript, wenn die Möglichkeit der Ausführung besteht.
-
Ruby on Rails hat dafür was recht praktisches:
http://guides.rubyonrails.org/migrations.htmlVielleicht möchtest Du Dich daran orientieren, das ist im Betrieb sehr angenehm.
-
Mal eine Frage. Warum verwendest Du Access bzw. MDB?
Für solche Fälle gibt es schon lange MSSQL Compact.
Das ist der Nachfolger von MDB.
-
Unix-Tom schrieb:
Mal eine Frage. Warum verwendest Du Access bzw. MDB?
Für solche Fälle gibt es schon lange MSSQL Compact.
Das ist der Nachfolger von MDB.Ich habe mich nicht genauer mit Alternativen beschäftigt, da Access für mich ausreichend erschien: Man muss keine zusätzliche Software für den Datebankserver installieren und es lässt sich von C# sehr einfach auf die Datenbank mit einer SQL Syntax zugreifen.
Ich selber halte von Access nicht sonderlich viel, aber für diesen Fall schien es mir ausnahmsweise mal brauchbar. Und ich hab diese Entscheidung bisher nicht bereut.
Ich werde wohl ein kleines Programm schreiben, welches die neuen benötigten Tabellen anlegt. Dieses führe ich dann einmal aus und kann anschließend meine alte Version der Lagerverwaltung durch die neue ersetzen. Das Programm kann dann auf die neu angelegten Tabellen zugreifen und alles ist gut.
-
Bei SQL Compact musst Du das gleiche Installieren wie bei Access.
MIt den UNterscheid das Du dort echtes SQL hast, mit SQL Server Management Studio arbeiten kannst , etc.
-
Auf dem Zielsystem ist nur Office installiert. Ich müsste dann doch zusätzlich einen Server installieren, welcher ständig läuft?
Es handelt sich bei dem Zielsystem um ein sehr altes System. Daher soll das so wenig wie möglich belastet werden.
Aber jetzt ist es eh zu spät und solange ich und die Leute, die es verwenden keine Probleme melden ist ja eh alles in Ordnung.
-
SqlExpress wenn das Zielsystem nicht "allzudünn auf der Brust ist". Dafür reicht ein Windows XP oder so ( max 10 gleichzeitige Zugriffe bei XP ) .
Oder halt den SQL Compact für Einzellplätze.
Der Vorteil des SqlExpress ist das er flexibel auf eine andere Version umgestellt werden kann, unterstützt auch Replikation, Sicherung und Wiederherstellung sowie andere nette Features.
Damit du das Datenmodel verändern kannst macht das Sinn mit SP´s zu arbeiten, Zugriffe erfolgen nur über die Sp´s , alle Änderungen werden innerhalb der Sp´s gemacht. Sollen Tabellen geändert werden müssen nur die Sp´s + Tabellen nicht das Programm geändert werden. So rufst du im Programm die Sp auf die mit Tabellen arbeitet, wenn jetzt eine Tabelle geändert werden muß kann man einfach eine neue Tabelle erstellen. Daten mit Bulk insert einfügen und die SP mit der neuen Tabelle arbeiten lassen.
Oder z.b. bei alten DB z.b. Sybase wo es kein Autoinkremet gibt, da wird oft in einer SP Rowcount der Tabellen in einer ID Tabelle abgelegt, bei "neuen" DB mit Autoinkrement kann man das ändern durch umschreiben der SP und Dummytabellen mit Autoinkremt für die Id´s der richtigen Tabellen.
-
Accy schrieb:
Auf dem Zielsystem ist nur Office installiert. Ich müsste dann doch zusätzlich einen Server installieren, welcher ständig läuft?
Nein uss Du nicht.
SQL Compact ist eine API mit einigen DLL.
Das ist kein Richtiger Server. Es ist aber ein Richtiges RDBMS basieren auf SQL Server.
Wenn Du Visual Studio hast dann schau dort mal nach.
Ist ganz Easy und das Programm kann später jederzeit sehr einfach auf was richtiges umgestellt werden.