RESTORE FILELISTONLY - Datensatz in temporäre Tabelle übertragen

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Cro22.

    RESTORE FILELISTONLY - Datensatz in temporäre Tabelle übertragen

    Hallo zusammen,

    ich bin seit einiger Zeit mit dem Thema SQL-Datenwiederherstellung beschäftigt. Mein Ziel ist es eine SQL-Backup Datei auf einem neuen Server einzulesen.
    Bevor ich mit der Wiederherstellung (RESTORE DATABASE) starte, benötige ich den logischen Dateinamen. Diesen bekomme ich über "RESTORE FILELISTONLY FROM DISK <pfad>".

    Jetzt zu meinem Problem. Um den logischen Dateinamen zu ermitteln, muss ich die ermittelten Datensätze aus "RESTORE FILELISTONLY..." in eine temporäre Tabelle übertragen. Auf dem SQL-Server funktionieren meine Befehle, in VB6 nicht.

    SQL-Abfrage

    1. DECLARE @restoreFileListData table (
    2. LogicalName nvarchar(128),
    3. PhysicalName nvarchar(260),
    4. [Type] char(1),
    5. FileGroupName nvarchar(128),
    6. Size numeric(20,0),
    7. MaxSize numeric(20,0),
    8. FileId bigint,
    9. CreateLSN numeric(25,0),
    10. DropLSN numeric(25,0) null,
    11. UniqueID UniqueIdentifier,
    12. ReadOnlyLSN numeric(25,0) null,
    13. ReadWriteLSN numeric(25,0) null,
    14. BackupSizeInBytes bigint,
    15. SourceBlockSize int,
    16. FileGroupID int,
    17. LogGroupGUID uniqueIdentifier null,
    18. DifferentialBaseLSN numeric(25,0)NULL,
    19. DifferentialBaseGUID uniqueIdentifier,
    20. IsReadOnly bit,
    21. IsPresent bit,
    22. TDEThumbPrint varbinary(32));
    23. insert into @restoreFileListData exec ('RESTORE FILELISTONLY FROM DISK = ''<pfad...>''');
    24. select Logicalname from @restoreFileListData;



    Visual Basic-Quellcode

    1. sSQL = "DECLARE @restoreFileListData table (LogicalName nvarchar(128), PhysicalName nvarchar(260), [Type] char(1),FileGroupName nvarchar(128), Size numeric(20,0), MaxSize numeric(20,0), FileId bigint, CreateLSN numeric(25,0), DropLSN numeric(25,0) null, UniqueID UniqueIdentifier, ReadOnlyLSN numeric(25,0) null,ReadWriteLSN numeric(25,0) null,BackupSizeInBytes bigint,SourceBlockSize int,FileGroupID int,LogGroupGUID uniqueIdentifier null, DifferentialBaseLSN numeric(25,0)NULL,DifferentialBaseGUID uniqueIdentifier,IsReadOnly bit,IsPresent bit,TDEThumbPrint varbinary(32));"
    2. sSQL = sSQL & vbNewLine & "insert into @restoreFileListData exec ('RESTORE FILELISTONLY FROM DISK = ''<pfad...>''');"
    3. rs.Open sSQL, cn, adOpenForwardOnly, adLockOptimistic, adCmdText
    4. sSQL = "SELECT * FROM @restoreFileListData"
    5. rs.Open sSQL, cn, adOpenForwardOnly, adLockOptimistic, adCmdText


    Hier wird beim Befehl "SELECT * FROM restoreFileListData" folgende Fehlermeldung ausgegeben => Fehler 0HE7D: Die Verbindung kann nicht verwendet werden, um diesen Vorgang auszuführen. Sie ist entweder geschlossen oder in diesem Zusammenhang ungültig.

    Ich hoffe jemand kann mir weiterhelfen ?( , hab im Internet und auch hier im Forum gesucht aber nichts dazu gefunden...

    Gruß, Cro22
    Hallo nochmal,

    da bis jetzt noch niemand geantwortet hat, wäre es irgendwie anders lösbar ?
    Um das Backup auf einen anderen Server einzuspielen, brauche ich den logischen Dateinamen.

    Hier der darauf folgende SQL-Befehl, vielleicht hat jemand eine alternative...

    SQL-Abfrage

    1. RESTORE DATABASE <new_database_name> FROM DISK=<backup_device> WITH REPLACE,
    2. MOVE <logical_file_name_in_backup> TO <operating_system_file_name>


    Gruß, Cro22