Hi,
also ich habe mir da etwas gebastelt, was sehr gut funktioniert:
Ziel ist; eine andere Datenbank (Sandbox) mit Daten aus der produktiven DB (Produktion) zu füllen.
In Sandbox kann man dann Dinge testen, ohne die Produktion zu gefährden. Das sollte möglichst mit einem Klick in dem Access-FE passieren, ohne ins SSMS wechseln zu müssen.
Ich habe es versucht, mit Backup aus Produktion und dann Restore in Sandbox, bekam aber immer alle möglichen Fehlermeldungen, so das ich nach anderen Lösungen suchte. Das Probleme dabei war oft, das die Ziel-Datenbank als single-user sein musste und, wenn da was hing , der Zustand irgendwie stubbelig war.
Zunächst lösche ich alle Daten in Sandbox, indem ich die Personen lösche, durch RI-Beziehungen werden alle andere beteiligten Tabellen gelöscht.
Dazu rufe ich eine Stored Procedure in Sandbox auf.
Die Datenbank ist dann quasi leer, bis auf einige Schlüsseltabellen, die sich eigentlich nicht ändern.
Dann habe den Datenimport im SSMS über "tasks" benutzt und importiere Tabelleninhalte aus der Produktion und speicherte diesen Vorgang in einer .dtsx Datei (dazu das SSIS).
Das mache ich von "unten nach oben" gemäß den RI-Regeln.
Diese Importe speichere ich, um sie wieder verwenden zu können.
Als ich alle Datenimporte hatte, erstellte ich in Access eine bat-Datei mit den .dtsx-Aufrufen in der richtigen Reihenfolge, die per dtexec nacheinander ausgeführt werden.
Z.B.
dtexec /f "C:\DbAdcDevelopment\sqls\FillSandboxfromProduktion\Person_from_prod.dtsx"
Diese .bat Datei mit den dtexec Befehlen führe ich mit einem shell Befehl aus und sie rennt los.
Meine DB ist ziemlich klein und das Ganze ist in weniger als 1 Minute erledigt.
Als Ergebnis ist in Sandbox der aktuelle Datenbestand aus der Produktion...works as designed.
Schön wäre es, wenn es den "Copy Database" Befehl auch in SQLEXPRESS geben würde, gibt es aber nicht.
Der große Vorteil ist, ich muss das Access-FE nicht verlassen, der neue Datebestand ist sofort da, per Klick.
Ich hoffe, ich konnte mich erklären...wenn noch Fragen sind...gerne.
Gruß
Martin