Jump to content

MSSQL Backupmöglichkeiten ?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hi

Welche Möglichkeiten bieten sich mir wenn ich einen MSSQL Server unter folgenden Anforderungen Backupen muss:

- Backup wird von einem externen (Java)Programm aufgerufen.

- Backup muss auf dem Rechner auf dem das JavaProgramm ausgeführt wird abgelegt werden und nicht auf dem MSSQL Server.

- Backup muss via JavaProgramm wieder eingespielt werden können. Unter umständen mit anderem Datenbanknamen.

- Backupen von einzelnen Tabellen sollte möglich sein (Und diese Tabellen in eine andere Datenbank wieder einspielen).

- Aufruf eines Kommandozeilenprogramms ist möglich. Powershell ist aber NICHT möglich.

- Es gibt keine Laufwerkfreigabe auf dem MSSQL, also "BACKUP DATABASE to disk = 'D:\blah'" geht nicht.

 

Hat jemand eine Idee was ich nutzen könnte?

Am ehesten denke ich an ein Kommandozeilenprogramm welches ich mit Parameter fütern kann, habe aber bis jetzt nichts schlaues gefunden.

 

Für Tipps wäre ich echt dankbar!

Grüsse

blubbern

Link to comment

Als Kommandozeilentools liefert der SQL-Server OSQL oder SQLCMD mit.

Einfach mal deren Parameter durchstudieren, damit sollte fast alles machbar sein.

 

Die Frage, die sich jedoch stellt: Ist das irgend ein Übungsprojekt? Oder warum muss das ausgerechnet mit Java und extern und alles laufen?

Der einfachste Weg wäre doch eher über einen Wartungsplan des SQL-Servers, oder nicht?

Link to comment

Moin,

 

auch mit einem Java-Programm kannst du SQL-Kommandos ausführen und somit das Backup-Kommando aufrufen. Da die Backupdatei ja auf dem Java-Rechner liegen soll, muss der SQL Server keine Freigabe haben, sondern natürlich der Java-Rechner. Es ist allerdings sinnvoller, erst die Backupdatei lokal zu speichern und sie hinterher auf den Zielrechner zu kopieren.

 

Einzelne Tabellen lassen sich per Backup-Verfahren nicht sichern. Das wäre in den meisten Umgebungen auch nicht sinnvoll, weil ein einem RDBMS die Tabellen ja miteinander verknüpft und so voneinander abhängig sind.

 

Gruß, Nils

Link to comment
Als Kommandozeilentools liefert der SQL-Server OSQL oder SQLCMD mit.

Einfach mal deren Parameter durchstudieren, damit sollte fast alles machbar sein.

 

Danke für die Tips. Habe mir SQLCMD angeschaut, dass ist ja mehr oder weniger einfach ein Client für normale Abfragen. QSQL habe ich noch nicht gefunden.. Aber mach mich gleich noch auf die Suche.

Die Frage, die sich jedoch stellt: Ist das irgend ein Übungsprojekt? Oder warum muss das ausgerechnet mit Java und extern und alles laufen?

Der einfachste Weg wäre doch eher über einen Wartungsplan des SQL-Servers, oder nicht?

Übungsprojekt? Jaein.

Es hat schon eine konkrete Anwendung. Das ganze soll nicht fürs tägliche Backup benutzt werden, sondern um eine Datenbank von einem Server auf einen anderen Server zu kopieren und gleichzeitig ein Backup für eventuell späteren Gebrauch ablegen. Dies wurde bis jetzt immer manuell vor dem Start des Javaprogramms (Welches verschiedenste Änderungen an der Datenbank durchführt) gemacht, soll jetzt aber automatisch auch von diesem Javaprogramm durchgeführt werden. Da dies von unterschiedlichsten Rechnern ausgeführt werden kann ist das mit der Freigabe eben eher subobtimal (erfordert wieder manuelles Eingreifen).

 

Einzelne Tabellen lassen sich per Backup-Verfahren nicht sichern. Das wäre in den meisten Umgebungen auch nicht sinnvoll, weil ein einem RDBMS die Tabellen ja miteinander verknüpft und so voneinander abhängig sind.

Durchaus richtig, aber bei diesem Fall ist es sinnvoll (notwendig) und wurde bis jetzt auch manuell gemacht. (DB1 wird auf DB2 kopiert. DB2 braucht aber bei einigen wenigen Tabellen den alten Inhalt aus DB2)

 

Grüsse

Link to comment

Moin,

 

Da dies von unterschiedlichsten Rechnern ausgeführt werden kann ist das mit der Freigabe eben eher subobtimal (erfordert wieder manuelles Eingreifen).

 

das muss man jetzt aber nicht verstehen, oder?

 

Irgendwo muss das Backup ja nun hin. Du kannst es ja auch zentral auf einem Fileserver ablegen. Oder du sorgst dafür, dass jeder Rechner, auf dem das Java-Programm läuft, eine Freigabe definierten Namens hat, dann kann das Programm sich den UNC-Pfad einfach zusammenbasteln.

 

Gruß, Nils

Link to comment

Hi nochmals

ich will es nun doch mit einer Freigabe machen. ALso auf dem Rechner auf dem das Programm ausgeführt wird muss eine Freigabe für Jeder vorhanden sein.

Danach wollte ich mit:

"backup database db to disk = '\\192.168.0.30\freigabe\db.bak'"

Die Datenbank sichern. Bekomme aber nur:

Meldung 3201, Ebene 16, Status 1, Zeile 1
Das Sicherungsmedium '\\192.168.0.30\freigabe\db.bak' kann nicht geöffnet werden. Betriebssystemfehler 5(failed to retrieve text for this error. Reason: 15105).
Meldung 3013, Ebene 16, Status 1, Zeile 1
BACKUP DATABASE wird fehlerbedingt beendet.

 

Egal ob ich es über Das management Studio oder direkt über eine Verbindung aus Java heraus mache.

Wie ich an anderer Stelle gelesen habe:

liiegt es sicherlich an den Rechten des SQL Serverdienstes. Unter welchem Konto läuft der denn. Der SYSTEM Account z.B. bekommt keinen Zugriff auf ein im AD geshartes Laufwerk, da SYSTEM nur lokal bekannt ist.

Und genau das ist hier auch der Fall. Hat sonst noch wer eine Idee wie ich das Backup auf meinen Rechner bekomme?

 

Das wäre toll:

GetMsSqlDump - a mysqldump-like tool for MSSQL

Aber eben powershell kann ich nicht voraussetzen und die C# Variante wird wohl nie fertig

Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...