Announcement

Collapse
No announcement yet.

MSSQL-Server sichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSSQL-Server sichern

    Guten Tag :-)

    ich bin wieder an einen kleinen Problem, ich möchte meine MSSQL-DB recht schick sichern *lach*
    Ich habe mit dem MSSQL-Srv die Möglichkeit eine Sicherung per SQL-Query anzustoßen:

    Code:
    BACKUP DATABASE MeineDatenbank
    TO DISK = 'Z:\SQLServerBackups\MeineDB.Bak
    Laut MIcrosoft speichert man das Query als Datei und führ es mit "sqlcmd" als geplanten Task aus.
    ABER ich möchte an den Dateinamen noch Datum etc.pp. anhängen eventuell noch ein bisschen Logik einbauen.
    Dazu kommt, dass ich mehrere Datenbanken sichern muss und wenn das sich was ändert, ändere ich auch das Query-Skript, was man auch mal vergisst ....

    Meine Idee ist es, ich verbinde mich mit dem Server, frage ab, welche Datenbanken existieren und und schicke das Query zum Sichern in einer for-each-Schleife über alle Datenbanken. Dabei erzeuge ich mir einen String für den Dateinamen der Sicherungsdatei.

    Mein Problem ist, ich habe noch nie mit MSSQL-Server und VB.NET gearbeitet, nur mit MySQL, wie gehe ich an die Sache ran, ich habe schon den SQLClient gefunden, aber beim Connectionstring muss ich eine Datenbank angeben, aber ich brauche ja in keine Datenbank sondern will diese Sichern.

    z.B.

    - Verbinde dich mit dem Server
    - Frage alle existierenden Datenbanken ab
    -Schleife über alle Datenbanken mit dem Backup-Query
    - schliessen der Verbindung mit dem Server

    Hoffe ihr könnt mir ein wenig helfen.

    Danke!!!

    Gruss Alex

  • #2
    Komplette Programme schreibe ich nur gegen Geld daher gibt's von mir nur Hinweise:

    a) du musst dich mit dem Server verbinden, sonst kannst du keine Queries ausführen
    b) Datenbanken können auch im laufenden Betrieb gesichert werden, daher stört die Anmeldung auch nicht

    Daraus folgert: du lernst, wie man sich mit VB.Net am SQL-Server anmeldet und ein SQL-Statement ausführt (google hat dazu Unmengen an Infos, ich tippe das nicht nochmal) und dann verwendest du für dein Script das sp_msforeachdb, ist zwar nicht einfach aber wirkungsvoll. Damit hast du alles, um deine Anforderung programmieren zu können. Aber etwas Aufwand wirst du schon selber betreiben müssen.

    bye,
    Helmut

    Comment


    • #3
      Hi Helmut,

      wenn ich ein komplettes Programm haben möchte bezahle ich auch dafür
      oder es gibt auch schon fertige Projekte bei Sourceforce, aber wo bleibt der Spaß an der Sache, habe ja eine Sicherung, ich möchte sie nur "schick" im VB.NET umsetzen, möchte ja auch daraus lernen.

      Deine Hinweise reichen mir schon, gut zu wissen, dass ich mich mit einer DB verbinden muss, hätte ja auch sein können, dass ich mich mit dem MSSQL-Server auch ohne Angabe einer DB verbinden muss um dann abzufragen welche Datenbanken es gibt ;-)
      Wie gesagt die Hausaufgaben habe ich zum Teil, also verbinden mit dem Server und absetzen eines SQL-Commands, ich dachte nur nicht dass es der richtige Weg ist.

      Aber der Hinweis auf sp_msforeachdb ist Gold wert!!!!
      Dann habe ich jetzt was zum spielen!!! Vielen Dank, hoffe ich kann mich bei Detail-Fragen nochmal melden?

      Danke Dir!!!
      Gruss Alex

      Comment


      • #4
        Hallo Helmut,

        ich habe grad mal bisschen programmiert, sp_msforeachdb scheint nicht so zu passen, weil ich bei jeder Datenbank ein anderes Statement schicken muss.
        Zum Beispiel soll Datenbank Projekte2010 unter D:\Datensicherung\SQL\backup_projekte.bak gesichert werden und die Datenbank Adressen unter D:\Datensicherung\SQL\backup_Adressen.bak usw.
        Also ändert sich das Backup-Statement immer von DB zu DB .-/

        Ich habe aber herausgefunden, mit sp_databases bekomme ich eine Tabelle mit den vorhandenen Datenbanken zurück. Grad mal im Code probiert funktioniert perfekt.

        Anhand der Rückgabewerte baue ich mir die Statements zusammen und schicke sie wieder an den Server.

        Wenn ich brauchbaren Code habe, stelle ich ihn online.

        Gruss Alex

        Comment

        Working...
        X