none
Restore der Datenbank mittels BCP schlägt fehl. RRS feed

  • Frage

  • Hallo,

    für eine Anwendung ist es notwendig, einmal alle Daten + Schema aus dem SQL-Server herauszuschreiben und wieder zu importieren. Dabei habe ich das BCP-Tool genutzt.

    Datenexport:
    BCP <Datenbank>.dbo.<Tabelle> out c:\temp\tabellenbackupfile.dat -c -x -t, -S <Server>\<Instanzname> -U <sa> -P <Passwort>

    Schemaexport:
    BCP <Datenbank>.dbo.<Tabelle> format nul -f c:\temp\tabellenbackupfile.fmt -c -t, -S <Server>\<Instanzname> -U <sa> -P <Passwort>

    Nachdem beide Dateien (Daten und Schema) im Zielverzeichnis korrekt erstellt und die Tabelle in der Datenbank gelöscht wurde, sollte die Tabelle neu erstellt und die Daten wieder eingelesen werden. Auch hierzu sollte das BCP genutzt werden.

    BCP <Datenbank>.dbo.<Tabelle> in c:\temp\tabellenbackupfile.dat -f c:\temp\tabellenbackupfile.fmt -S <Server>\<Instanzname> -U <sa> -P <Passwort>

    Leider funktioniert dies überhaupt nicht. Das Ergebnis sind Fehlermeldungen bei der Anmeldung für den o.g. Benutzer.
    Auch mit dem Parameter -T (anstelle -U and -P) gab den gleichen Fehler:

    SQLState=37000, NativeError=4060
    Die von der Anmeldung angeforderte <Datenbankname>-Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung
    SQLState=28000, NativeError=18456
    Fehler für die Anmeldung den Benutzer '<Benutzername>'

    Gleichzeit bin ich mit dem SQL Server Management Studio mit den o.g. Zugangsdaten verbunden; die Zugangsdaten scheinen also korrekt zu sein. Die Standarddatenbank der Benutzer ist die wiederherzustellende Datenbank; die Benutzer sind db_owner.

    Kann jemand auf Anhieb den Fehler entdecken oder hat ähnliches erlebt?!?

    Mit freundlichen Grüßen
    Pascal Schmitz

    Dienstag, 19. Juli 2016 14:14

Alle Antworten

  • Hallo Pascal,

    zur Datenrücksicherung alleine ist bcp nicht geeignet. bcp format erstellt nur eine minimale Tabellenbeschreibung, die zum korrekten Beladen ausreicht - wichtige Dinge wie Einschränkungen uam. fehlen dort. Zum Erzeugen eines (vollständigen) Datenbank Skriptes verwende besser die Skript Funktion im SSMS. Dort gibt es auch eine Möglichkeit die Daten mit zu sichern. Alternativ kannst Du nach Erzeugen des Schemas bcp zum Laden der Daten verwenden.[1]

    Zum zweiten sollte das Konto nicht gerade auf die Datenbank als Standard verweisen, die man gerade gelöscht hat. Für "sa" sollte man die Zuweisung auf der master Datenbank belassen - und arbeitet so gut wie nie mit dem Konto. Fürs Korrigieren siehe How can I change my default database in SQL Server without using MS SQL Server Management Studio?

    Gruß Elmar

    [1] Wann immer möglich sollte man  BACKUP und RESTORE bevorzugen - schneller und man übersieht nichts.

    Dienstag, 19. Juli 2016 16:26