public void RestoreDatabase(String databaseName, String filePath,
String serverName, String userName, String password, String dataFilePath, String logFilePath)
{
Restore sqlRestore = new Restore();
BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = databaseName;
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlRestore.Action = RestoreActionType.Database;
String dataFileLocation = dataFilePath;
String logFileLocation = logFilePath;
db = sqlServer.Databases[databaseName];
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
sqlRestore.ReplaceDatabase = true;
sqlRestore.Complete +=new ServerMessageEventHandler(sqlRestore_Complete);
sqlRestore.SqlRestore(sqlServer);
db = sqlServer.Databases[databaseName];
db.SetOnline();
sqlServer.Refresh();
}
On calling this method the restore operation failed with this message
Restore failed for Server
‘MDM04\SQLEXPRESS’.
mdm04 is my computer name
the inner exception is
“System.Data.SqlClient.SqlError:
Logical file ‘vrv’ is not part of
database ‘vrv’. Use RESTORE
FILELISTONLY to list the logical file
names.”
vrv is database name
What should I do to restore the file
Problem is here
here databaseName means, name of the database specified in db backup file. But you are specifying the destination db name.
Change it to original db name
here the sample code to read db names from backup file