| 

.NET C# Java Javascript Exception

3
Moin,

mal eine kleine Prozessfrage, an der ich im Moment knoble. Ist kein wirklich spezifische Frage, deshalb poste ich sie mal hier.

Erst einmal ein wenig die Struktur (bzw. nur der wichtige Teil davon):

2 SQL-Server Instanzen (Test und Live)
Auf jeder Instanz gibt es eine globale Datenbank und x kundenspezifische Datenbanken.
Nicht kundenspezifische Prozeduren und Funktionen werden in der globalen Datenbank gespeichert.
Die globale Datenbank wird als Schema eingebunden.
TFS als unterstützendes Tool.
Datenbankprojekte im Source Control.

Problem simpel:
Ich soll eine Prozedur an einer der Kundendatenbanken anpassen, zur Hilfe erstelle ich mir eine allgemein gültige Funktion (ständig wiederholende Stringoperationen oder ähnliches), die man später auch gut bei anderen Projekten nutzen kann. Diese Funktion kommt aber nicht auf die Kundendatenbank, sondern auf die globale Datenbank, damit sie dort zentral genutzt werden kann.
Wie schaffe ich es jetzt, dass, wenn alle Tests erfolgreich waren und alles aufs Livesystem soll, die Funktion auf der globalen Datenbank nicht vergessen wird?

Problem komplex:
Gleiches Beispiel von oben. Nur wurde die Aufgabe oben nie auf das Livesystem gespielt, damit auch nicht die Hilfsfunktion. Jetzt benutze ich genau diese Funktion aber wieder in einem anderen Projekt, das funktioniert auf dem Testsystem auch wunderbar, da dort die Funktion ja global vorhanden ist. Wird aber dieses Projekt auf das Livesystem gespielt, dann fehlt natürlich die globale Funktion, es knallt und ich wüsste es vielleicht nicht einmal mehr, weil ich die Funktion vor Monaten für ein Projekt geschrieben habe, dass es nie live geschafft hat.

Die Test- und Deployabteilung würde sich jetzt, zu recht, beschweren, dass sie nicht über neue Funktionen informiert wurden und sie diese ja auch mit ausrollen müssten.

Jetzt sitze ich hier und überlege mir, wie man das irgendwie logisch verknüpfen kann. Ich kann natürlich einmal die SQL-Scripte durchgehen und alle Funktionen und Prozeduren raus schreiben, die ich da drin benutzt habe. Ich kann dann aber ja auch nicht mit einer Liste von 10 Funktionen ankommen und sagen, dass das alle Funktionen sind und die jetzt mal schauen sollen, ob sich irgendeine neu ist oder sich was geändert hat, denke dann werde ich mit heißem Kaffee überschüttet.

Das einzige, was mir so auf die Schnelle einfällt wäre, dass man ein weiteres, zentrales Datenbankprojekt erstellt, DB_Libraries oder ähnlich, in dem sich nur die Hilfsfunktionen befinden und dieses Projekt in alle anderen Datenbanksolutions mit einbindet (nicht nur als Schema), dann würde es beim Deployment über VS auch auf die neue Datenbank übernommen werden.

Ich weiß nur noch nicht, ob mir die Lösung wirklich gefällt, weil natürlich jedes einzelne Projekt gleich wieder größer werden würde.

Hat jemand eine andere Idee?
datenbank deployment
14.02.2012
Feroc 1,1k 1 8
1 Beitrag
0
Ich mach das so:
Ich ändere nie etwas manuell an irgend einer Datenbank, sondern lasse alle notwendigen Änderungen von einem Script erledigen. Jede Änderung erzeugt eine neue Versionsnummer in einer Tabelle. So kann ich uralte Backups einspielen, diesen einen Skript laufen lassen und bin wieder auf Aktuell ohne mir Sorgen machen zu müssen etwas vergessen zu haben.

Voraussetzung: nie nicht auf keinen Fall irgendwelche manuellen Änderungen machen!

Frage des Kundenadmins "brauchen sie Zugriff auf unsere Server?"
Antwort "nein, sie bekommen wenn notwendig bei jedem Applikationsupdate einen Skript dazu der alles notwendige für sie erledigt."
Vorführung:
Managment Studio öffnen
Skript öffnen,
F5 drücken,
schauen was der Skript für Rückmeldungen bringt,
fertig.
Ergebnis: Admin lehnt sich entspannt zurück.

lg Ernst
20.02.2012
cybere 204 7
Entsprechende Scripts werden von Visual Studio schon erzeugt. Die Frage ist eher, wie ich solche Dinge anständige in Projekte aufteile. Gerade wenn es um globale Funktionen geht, die auf einer anderen Datenbank liegen.
Feroc 27.02.2012

Stelle deine Datenbank-Frage jetzt!
myfactory International GmbH
infounit Software GmbH
Sevitec Gruppe