Datenbank wiederherstellen mit RESTORE

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von AliveDevil.

    Datenbank wiederherstellen mit RESTORE

    Guten Morgen liebe vb-paradise-Benutzer.

    Wie ihr sehen könnt ist dies mein erster Beitrag, und dem entsprechend gering ist meine Erfahrung mit dem Umgang von Visual Basic und SQLExpress.

    Meine Frage lässt sich kurz stellen.

    Ich kann wunderbar in die Datenbank reinschreiben aber das Wiederherstellen funktioniert nicht.

    Reinschreiben tue ich natürlich mit INSERT INTO ...

    Und So versuche ich die Datenbank wiederherzustellen:


    VB.NET-Quellcode

    1. ... 'Verbindung aufbauen
    2. cmd.CommandText = "RESTORE DATABASE [Datenbankname] FORM DISK = '" & tb_file.Text & "' WITH MOVE 'Datenbankname' TO 'C:\User\User\Desktop\Datenbank.mdf' MOVE 'Datenbank_LOG' TO 'C:\User\User\Desktop\Datenbank.ldf'"


    Das Problem: entweder passiert nichts oder er sagt:

    "RESTORE kann die "Datenbankname" Datenbank nicht verarbeiten, weil sie von dieser Sitzung verwendet wird. Es wird empfohlen, die master-Datenbank für diesen Vorgang zu verwenden"

    Heißt das, dass meine Verbindung noch offen ist und er kann die Datenbank nicht "austauschen"? Was meint er mit master-db?

    Oder habe ich die Syntax mit dem MOVE TO MOVE ... falsch verstanden?

    Wäre für jede Hilfe dankbar =)

    Gruß Only_PS
    Danke erstmal.
    "
    Er hat etwas geladen und auch durchgeführt. Doch jetzt hab ich 1 Fehler:

    1. Unable to copy file " C:\.....Datenbank.mdf" to "bin\Debug\Datenbank.mdf" Der Prozess kann nicht auf die Datei "bin\Debug\Datenbank.mdf" zugreifen, da sie von einem anderen Prozess verwendet wird."

    => Ich habe die Datenbank wiederhergestellt und das ganze nochmal gemacht.

    Jetzt zeigt er mit folgendes an:

    Der exklusive Zugriff auf die Datenbank ist nicht möglich, da die Datenbank gerade verwendet wird.

    RESTORE DATABASE wird fehlerbedingt beendet.

    Der Datenbankkontext wurde auf 'master' geändert.

    Ich hab die Abfrage so gestaltet:

    VB.NET-Quellcode

    1. cmd.Command.Text = "USE MASTER; RESTORE DATABSE Datenbankname FROM DISK '" & tb_file.Text & "'"




    ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Only_PS“ ()

    Ist der Code, so wie der da steht aus deinem Code kopiert und eingefügt? Wenn ja: Es heißt DATABASE nicht DATABSE.
    Aber das nur nebenbei.

    Da ich mich aber kaum mit SQL Express auskenne, werde ich dir hier nicht weiterhelfen können.
    Außerdem: cmd.CommandText nicht cmd.Command.Text.

    Ist die Datenbank Datenbank.mdf in deinem Programm offen? Hast du evtl. Verbindungen zu dieser Datenbank?
    Ansonsten: wäre es nicht möglich, einfach das Original in deinen Anwendungsordner zu kopieren statt komische Sachen mit RESTORE zu fabrizieren?