automatischer mssql .bak import

mhribernik

Erfahrenes Mitglied
Hallo Leute!

Ich stehe vor folgendem Problem und vielleicht könnt ihr mir ja einen Denkanstoss geben:

1x Täglich soll eine MsSQL .bak Datei in meine DB geladen werden. Die .bak Datei liegt jeden Tag auf einer definierten URL zum abholen/download bereit.

Die Backup Datei hat ca 200 MB.

Gibt es denn in PHP eine möglichkeit direkt .bak's in die DB zu laden? und gibt es eine Möglichkeit die Datei vorher vom fremden Server auf den eigenen zu laden?

Es steht ledeglih ein gehosteter und kein eigener Webserver zur verfügung.


Als alternative Lösung ist mir bereits eingefallen, anstatt einer .bak Datei auf einem fremden Server, lieber einzelne .csv (pro Tabelle) per ftp direkt auf meinen Server laden zu lassen.
Diese Lösung möchte ich jedoch vorerst umgehen.


Weiss jemand wie so etwas zu realisieren ist?

Ich danke euch allen im Voraus für euer Interesse!
lg. marko
 
Hallo,

1. 200MB hört sich für mich jetzt erst mal recht viel an. Das wirst du IMHO nicht mit einem Rutsch in die DB bekommen, da PHP ein Ausführungszeitlimit (max_execution_time) hat, die man in den seltensten Fällen bei einem Hoster anpassen kann.

2. Download von Dateien mittel PHP sollte kein Problem darstellen, aber auch hier gilt natürlich die max_execution_time. Den Download kann man bspw. über CURL oder Sockets machen, eine Browser-Emulation wäre auch noch denkbar.

3. Die Idee mit dem CSV ist nur dann sinnvoll, wenn die max_execution_time nicht zuschlägt.

Wie schon gesagt, 200MB ist wirklich ne Menge Holz. Hast du auch daran gedacht, das du bei einem Webhoster Speicherplatz-Limit hast und die Daten in einer DB da auch dazu zählen?

Für mich klingt das jetzt erstmal etwas abenteuerlich :-)
 
Erstmal dankeschön für deine Antwort!

Genau dieses Ausführungslimit behindert mich bei dem Vorhaben.

ad 3)
Als gesplittete .csv würde es funktionieren, jedoch müsste dies von dem DB-Geber angepasst werden, was zusätzliche Kosten verursachen würde.

ad 1)
Wie könnte ich denn das Backup aufspalten? Es liegt eine fertige .bak vor. Kann man diese im nach hinein aufteilen? Das ganze sollte natürlich am besten gleich serverseitig passieren (PHP, ASP)

ad 2)
Auch hier greift momentan noch die max_execution_time. Werde mich mal an den Hoster wenden und erfragen ob man die Variable in diesem Fall abändern könnte.

Bezüglich des Speicherplatzes liegt kein Problem vor.

Folgendes hab ich mir überlegt:
Erstellung eines C++ Programms, dass permanent auf dem Firmenserver läuft und zu fixer Tageszeit die .bak runterläd und sie danach via FTP auf den (externen) Webserver platziert.
Bezüglich dem .bak import in die DB bin ich mir noch unsicher. Kannst du mir dazu nen Tipp geben wie ich diese lade? (erstmal in einem Stück)

Danke nochmal!

lg. marko
 
Hier findest du das SQL, mit dem du das BAK importieren kannst: http://daniel-müller.de/os/win/mssql_bak_import_ohne_importer.html

Edit: Wenn du ohnehin schon ein C++-Programm bauen willst, was die Datei rüber lädt, kann das doch eigentlich auch gleich den Import-Query absetzen. Die Frage wäre

- welches OS auf dem Webserver läuft (bei Windows sollte es genügend Libs für MSSQL geben, Linux hätte diese: http://www.freetds.org/software.html)
- ob du überhaupt ein C++-Programm auf dem Webserver starten darfst.
 
Zuletzt bearbeitet:
Zurück