MSSQL bak Datei lesen

  • VB.NET
  • .NET 5–6

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

    MSSQL bak Datei lesen

    Moin,

    für ein von mir erstelltes Tool zum Sichern und Wiederherstellen von Backups (SQL, MySQL) benötige ich aus einer BAK Datei (MSSQL) den Namen der Datenbank.

    Als Beispiel ein Ausschnitt aus meinem Restore-Statement.

    VB.NET-Quellcode

    1. Dim SqlStr As New StringBuilder
    2. With SqlStr
    3. .AppendLine("USE [master]")
    4. .AppendLine("RESTORE DATABASE [" & NewDatabaseName & "]")
    5. .AppendLine("FROM DISK = N" & "'" & BakFile.FullName & "'")
    6. .AppendLine("WITH FILE = 1" & Cnst.SqlSeparator)
    7. .AppendLine("MOVE N" & "'" & Me.InitialDatabase & "'" & " TO " & "N'" & IO.Path.Combine(InstanceDirectory.FullName, NewDatabaseName & ".mdf") & "'" & Cnst.SqlSeparator)
    8. .AppendLine("MOVE N" & "'" & Me.InitialDatabase & "_Log" & "' TO " & "N'" & IO.Path.Combine(InstanceDirectory.FullName, NewDatabaseName & "_log.ldf") & "'" & Cnst.SqlSeparator)
    9. .AppendLine("NOUNLOAD" & Cnst.SqlSeparator & "REPLACE" & Cnst.SqlSeparator & "STATS = 5")
    10. .Debug(True)
    11. Return .ToString
    12. End With


    Das Script funktioniert, solange die Datenbank aus der die Sicherung erstellt wurde, die selbe ist, wie die unter der sie wieder importiert werden soll.

    Me.InitialDatabase gibt hier den Namen der Datenbank-Datei in der Sicherung an. Dieser ist allerdings abweichend von NewDatabaseName.

    Nun möchte ich über VB die BAK Datei einlesen (nicht in den SQL Server!) und nachschauen, wie der Datenbankname in der Datei lautet.

    Grüße :)

    BlueLagoonX schrieb:

    Nun möchte ich über VB die BAK Datei einlesen (nicht in den SQL Server!) und nachschauen, wie der Datenbankname in der Datei lautet.
    Dann nenne Deine Backup-Datei nicht
    Datenbank.sql.bak sondern Datenbank.bak.sql.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany das geht leider nicht - die .bak ist keine .sql Datei dort stehen keine einfachen SQL Statements.

    @BlueLagoonX du kannst per TSQL über das RESTORE Command HEADERONLY auslesen.
    Siehe: learn.microsoft.com/en-us/sql/…SDN&view=sql-server-ver16
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen