| 

.NET C# Java Javascript Exception

2
Hallo Leute,

zum Wiederherstellen einer DB-Sicherung innerhalb meines Programmes verwende ich die Restore-Klasse aus dem Namespace: "Microsoft.SqlServer.Management.Smo".
Nun habe ich aber das Problem, dass ich die DB-Sicherung (*.BAK) in einem anderen Zielverzeichnis als dem in der Sicherung hinterlegten wiederherstellen möchte?
Welcher Eigenschaft der Resore-Klasse kann ich denn nun das neue Zielverzeichnis übergeben?

Bisher verwende ich die Restore-Klasse wie folgt:

Restore restore = new Restore();
restore.Action = RestoreActionType.Database;
restore.Database = databaseName;
restore.Devices.Add(new BackupDeviceItem(backupFileName, DeviceType.File));
restore.SqlRestore(server);

Da wird ab als Zielverzeichnis das in der Sicherung hinterlegte verwendet.

Wenn ich die Rücksicherung über ein SQL-Script machen würde, sähe das Sql-Script dafür wie folgt aus:
RESTORE DATABASE [klp] FROM DISK = N'C:\Temp\Sicherung\klp.bak' WITH FILE = 1,
MOVE N'KLP_Data' TO N'C:\Temop1\Datenbank\klp.MDF',
MOVE N'KLP_Log' TO N'C:\Temp1\Datenbank\klp_Log.LDF',

Wie setze ich das Verzeichnis aus den "Move-Anweisungen" in der Restore-Klasse?

Vielen Dank für Eure Hilfe.
Carsten
04.04.2011
Carsten Ilwig 337 1 1 6
2 Antworten
3
Das sollte mit RelocateFile gehen:
Restore restore = new Restore();
restore.Action = RestoreActionType.Database;
restore.Database = databaseName;
restore.Devices.Add(new BackupDeviceItem(backupFileName, DeviceType.File));
restore.RelocateFiles.Add(new RelocateFile("KLP_Data", @"C:\Temp1\Datenbank\klp.mdf"));
restore.RelocateFiles.Add(new RelocateFile("KLP_Log", @"C:\Temp1\Datenbank\klp_Log.ldf"));
restore.SqlRestore(server);


Edit:
Die Literale KLP etc. musst du natürlich noch durch deine Variablen anpassen.
04.04.2011
Jürgen Luhr 7,1k 1 9
0
Hallo Jürgen,

vielen Dank für die schnelle Antwort.
So klappt es jetzt prima mit der Rücksicherung! :-)

Carsten
04.04.2011
Carsten Ilwig 337 1 1 6

Stelle deine Sql-Frage jetzt!