none
Fehler bei Rücksicherung SQL-Server Datenbank RRS feed

  • Frage

  • Ich versuche hier gerade (zum Glück nur probehalber) eine SQL-Datenbank über das SQL Server Management Studio zurückzusichern und bekomme dabei den folgenden Fehler:

    Die angegebene Umwandlung ist ungültig. (SqlManagerUI)

    Wenn ich versuche mir den Inhalt dieser Sicherungsdatei anzuzeigen, bekomme ich den Fehler

    Ein Objekt kann nicht von DBNull in andere Typen umgewandelt werden. (mscorlib)

    Die Version des SQL Servers ist 10.50.2500.

    Die Sicherung wurde mit dem SQL-Befehl "BACKUP DATABASE [!DATABASE!] TO DISK = '!SQLBAKFILE!'" erstellt.

    Was bedeutet dieser Fehler? Und vor allem, wie kann der Fehler behoben bzw. vermieden werden.

    Denn wenn Datensicherungen von SQL-Server nicht zurücksicherbar sind, müsste ich eigentlich allen unseren Kunden ein Schreiben schicken, dass die so schnell wie möglich eine alternative Form der Datensicherung benötigen bzw. auf einen SQL-Server wechseln müssen, bei dem man die Daten auch zuverlässig sichern und zurücksichern kann. Denn ganz ehrlich, eine nicht zurücksicherbare Datensicherung macht mir Angst. Wer haftet denn hier dafür, wenn die Sicherung nicht funktioniert???

    Liebe Grüße
    Sam Jost


    • Bearbeitet Sam Jost Freitag, 19. Oktober 2012 09:46
    Freitag, 19. Oktober 2012 09:31

Antworten

Alle Antworten

  • Hi,

    wenn es denn so wäre, dass SQL Server keine ordentlichen Sicherungen erzeugen und natürlich auch wieder zurückspielen könnte, gäbe es SQL Server gar nicht mehr.

    Ich nehme eher an, dass Du einen Fehler gemacht hast. Denn wo auch immer diese Fehlermeldung herkommt, reproduzieren kann ich die nicht.

    Sichern und zurückspielen klappt hier einwandfrei. Falls die von dir genannte Fehlermeldung wirklich beim Ausführen von

    Datenbank
     -> Datenbank wiederherstellen
       -> "Von Medium"
          -> <.bak Datei auswählen>

    kommt, sag mal bitte, bei welchem Schritt genau diese Meldung kommt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 19. Oktober 2012 09:47
    Moderator
  • Hallo Sam,

    könnte es sein, dass der Backup von einer späteren SQL Server Version (z. B. 2012) stammt?

    Denn dann taucht diese Fehlermeldung auf, siehe
    http://stackoverflow.com/questions/10753207/how-can-i-restore-a-database-backup-file-bak-from-sql-server-2012-into-sql-se
    und http://www.kodyaz.com/articles/specified-cast-is-not-valid-sqlmanagerui.aspx (davon abgesehen das es dort 2012 heißen soll).

    Und es war zu keiner Zeit möglich, mit einer älteren SQL Server Version den Backup einer neueren wiederherzustellen.

    Gruß Elmar

    • Als Antwort markiert Sam Jost Freitag, 19. Oktober 2012 12:34
    Freitag, 19. Oktober 2012 09:58
    Beantworter
  • Eben, das würde mich auch sehr erstaunen, wenn so eine wichtige Grundfunktion wie Sichern und Zurücksichern Fehler hat.

    Die Fehlermeldung mit der ungültigen Umwandlung kommt, nachdem ich die bak-Datei ausgewählt habe und den Dialog, wo ich die Datei ausgewählt habe, schließe. Wo sonst die Anzeige der Datenbank eingeblendet wird, kommt dann diese Fehlermeldung.

    Der andere Fehler mit DBNull erscheint, wenn ich eine Datei ausgewählt habe und dann rechts auf den Button "Inhalt" klicke (also bevor ich den Dialog schließe).

    Ich vermute irgendwas ist beim Sichern schiefgegangen (aber auch das darf eigentlich nicht vorkommen). Nach Rücksprache mit einem Kollegen könnte ich mir vorstellen, dass die SQL-Datei in Benutzung war, als der Backup-Befehl durchgeführt wurde, aber selbst das sollte doch keine ungültige Datensicherung verursachen, oder?

    Liebe Grüße,
    Sam


    • Bearbeitet Sam Jost Freitag, 19. Oktober 2012 10:04
    Freitag, 19. Oktober 2012 10:03
  • Hallo Sam,

    bitte schau mal, ob Elmars Vermutung, dass das Backup von einer SQL Server 2012 Instanz kommt, zutrifft. In dem Fall kann das auch nie funktionieren, man kann keine Datenbanken und/oder Backups aus neueren Versionen in ältere Versionen einspielen (auch nicht von 2008 R2 zu 2008, ...). Umgekehrt geht das natürlich schon (zumindest zum Großteil)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 19. Oktober 2012 11:19
    Moderator
  • könnte es sein, dass der Backup von einer späteren SQL Server Version (z. B. 2012) stammt?

    Als ich zuletzt nachgesehen habe, war es die gleiche Version. Was ich jetzt aber nochmal überprüfen werden.

    Freitag, 19. Oktober 2012 11:22
  • Hallo Sam,

    bitte schau mal, ob Elmars Vermutung, dass das Backup von einer SQL Server 2012 Instanz kommt, zutrifft. In dem Fall kann das auch nie funktionieren, man kann keine Datenbanken und/oder Backups aus neueren Versionen in ältere Versionen einspielen (auch nicht von 2008 R2 zu 2008, ...). Umgekehrt geht das natürlich schon (zumindest zum Großteil)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Sowas, die haben tatsächlich letzte Woche eine neue Version auf dem Server eingespielt. Damit hätte ich nun gar nicht gerechnet und muss mich vielmals entschuldigen!!!

    Wobei ich es echt schwach finde, dass Microsoft hier keine vernünftige Fehlermeldung ausgibt. Es kann doch nicht so schwer sein, die Version des SQL-Servers mit in die Sicherung zu schreiben und abzufragen.

    Sorry, ich bitte vielmals um Entschuldigung!

    Und Danke für die schnellen Rückmeldungen!!

    Liebe Grüße,
    Sam

    Freitag, 19. Oktober 2012 12:30
  • Hallo Sam,

    wenn man sich den TRANSACT-SQL Befehlen (RESTORE) bedient, bekommt man die notwendigen Informationen,
    wie u. a. im zweiten Link am Ende gezeigt.

    In den SQL Server Sicherungen stehen exakte Informationen, siehe u. a. RESTORE HEADERONLY (Transact-SQL)
    Der Aufbau kann sich von Version zu Version ändern und sich auf ewig auf ein Format festzulegen,
    würde jede Weiterentwicklung behindern.

    Das Problem ist hier die (veraltete) Oberfläche, die nichts von einer neuen SQL Server Edition wissen kann. 
    Der Fehler wird von SQL SMO, das als Schnittstelle dient, als eine .NET Ausnahme durchgereicht.

    Zwar könnte man eine allgemeinere Meldung produzieren, nur hätte das den Nachteil "richtige" Fehler zu verdecken.
    Da viele Fehler (Hardware, Software usw.) die schlechte Gewohnheit haben, vorher nicht bekannt zu sein,
    ist jede Information hilfreich, wie jeder Entwickler weiß. 
    Dass der Anwender sich nicht über den Stand seiner SQL Server im Klaren ist, wäre da nur ein Fall ;)

    Gruß Elmar

    • Als Antwort vorgeschlagen Olaf HelperMVP Samstag, 20. Oktober 2012 05:15
    Freitag, 19. Oktober 2012 13:23
    Beantworter
  • Hatte heute auch das Problem!

    Ein kleines Skript hat
    1. ein Backup erstellt.
    2. das Backup auf ein Netzlaufwerk kopiert

    Die Löung war simpel, aber schwer zu finden und letztendlich ist das Ganze ziemlich gefährlich:

    Der copy Befehlt hat schon kopiert, bevor das Backup fertig war!!!
    Leider war die Datei trotzdem gleich groß und es gab auch sonst keine Fehler.

    Mittwoch, 4. November 2015 15:03
  • Was möchtest Du uns mit diesem Posting sagen?

    Falls es einen Fehler gab, müsstest Du den ausführlicher beschreiben.

    Einen schönen Tag noch,
    Christoph
    --
    Data Platform MVP - http://www.insidesql.org/blogs/cmu  

    Donnerstag, 5. November 2015 07:16