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.
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
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
- 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));
- insert into @restoreFileListData exec ('RESTORE FILELISTONLY FROM DISK = ''<pfad...>''');
- select Logicalname from @restoreFileListData;
Visual Basic-Quellcode
- 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));"
- sSQL = sSQL & vbNewLine & "insert into @restoreFileListData exec ('RESTORE FILELISTONLY FROM DISK = ''<pfad...>''');"
- rs.Open sSQL, cn, adOpenForwardOnly, adLockOptimistic, adCmdText
- sSQL = "SELECT * FROM @restoreFileListData"
- 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

Gruß, Cro22