Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Befüllen der Entwicklungstabellen aus Produktion

Begonnen von MartinHan, Januar 18, 2025, 13:06:56

⏪ vorheriges - nächstes ⏩

MartinHan

Hallo,

viele werden sicherlich bei der Erstellung von DB-Anwendungen verschiedene Umgebungen verwenden, um z.B. neue Funktionen mit den gleichen Daten oder alte Funktionen mit neuen Daten oder was auch immer testen zu können.

Ich habe diese Umgebungen:

- Produktion (auf einer separaten Hardware)
- Sandbox (eigene Database auf der gleichen Hardware)
- Abnahme (anderer Rechner, der auf die Produtionsdaten zugreift)
- Entwicklungsumgebung mit eigener DB auf dem Entwicklungsrechner
- SandboxDev separate Database auf dem Entwicklungsrechner


Ich will jetzt nicht im Detail auf die einzelnen Umgebungen eingehen, will das aber gerne tun, falls es jemand wünscht.

Meine Aufgabe bestand jetzt darin, nur die Inhalte der Tabellen aus der Produktion in die Entwicklung zu bringen, um zu testen, wie sich das System mit neue entwickelten Funktionen verhält.
Mann kann natürlich in der Produktion ein Backup machen, dieses File irgendwie in die Entwicklungsumgebungen kopieren und ein Restore durchführen.
Das hat aber den Nachteil, das beim Backup-Restore auch die STP u.ä. in der Entwicklung überschrieben werden und das möchte ich nicht. Wenn ich hier falsch liege, bitte ich um Korrektur.
Ebenfalls haben ich zig Schlüsseltabellen, die sich quasie nie ändern, die sollen auch nicht neu geladen werden.

Und so habe ich es gelöst:

Backup in Produktion
Dieser Backup wird von Access aus angestoßen. Er kopiert die Backupdatei automatisch auf ein Netzlaufwerk (R),               so das die Daten auch außerhalb des Servers gesichert sind. Auf R können alle beteiligten Rechner zugreifen.
Meines Wissens kann man nicht ein Backup auf eine Netzlaufwerk direkt durchführen, aber so geht es ja.

Anmelden in der Entwicklung
Es wird dann die aktuellste Produktions-Backup Datei auf R gesucht und in das Backuperzeichnis der Entwicklungs-Db kopiert.

ich habe konsequent RI-Beziehungen angelegt. Wenn ich die Personen lösche, sind alle anderen abhängingen Tabellen leer.

Also: Löschen der Personen

Ich generiere dann in VBA die T-SQL Befehlsfolge für einen Restore in Sandbox, die Befehle sichere ich in einer
SQl Datei.

Ich hatte vorher schon dtsx Dateien mit Hilfe der SSIS Funktionen im SSMS (Datenbank > Tasks > import) und pro Tabelle abgelegt. Notwendig ist hier  RI-Beziehungen zu beachten, also von "unten" nach "oben".

den obigen Restore (mit sqlcmd) und die dtsx wandern alle in eine .bat Datei.

Hier Beispiele:

sqlcmd -d master -U <user> -P <pw> -S .\SQLEXPRESS -i C:\DbAdcDevelopment\sqls\Restore\restoretmp.sql -o C:\DbAdcDevelopment\return.sql

dtexec /f "C:\DbAdcDevelopment\sqls\FillDevelopmentfromProduktion\02_Person.dtsx"

Die Bat-Datei führe ich aus und alles ist schön, works as designed.
Da ich ja nur eine kleine DB habe ist das ganz in 2 Min mit einem Klick erledigt.

Zusammengefasst nutze ich also die SandboxDev-Umgebung als Zwischenscheicher um die Tabellen in der Entwicklung neu aus der Produktion zu befüllen.

Wer noch Fragen hat, gerne!

Martin







Es gibt nichts gutes, außer, man tut es! EK

MzKlMu

Hallo,
was mir aus Deiner Beschreibung nicht klar wurde: Ist die DB in Backend und Frontend aufgeteilt ?
Gruß Klaus

MartinHan

Front End ist Access und Back end ist MS sql Db, also schon aufgeteilt nur eben nicht Access-Be.
Es gibt nichts gutes, außer, man tut es! EK