Home All Groups Group Topic Archive Search About

Restore problem using SMO and SqlRestore

Author
1 Sep 2006 3:51 PM
SPS Developer
I'm trying to backup and restore a database using SMO and the code completes
with no errors, but the database on the SQL Server remains in the
DBName (Restoring...) state and never seems to finish. All the files appear
to be created though.

Am I missing something in my code?  The code below lets the user select the
database to backup, give it a new name and then restores it.  (Basically a
database copy)

Server selectedServer = new Server(comboServer.Text);
string dbName = comboDB.SelectedItem.ToString();
string newDbName = txtNewDbName.Text;

Database db = selectedServer.Databases[dbName];

Backup bk = new Backup();
bk.Action = BackupActionType.Database;
bk.BackupSetDescription = "Full backup of Database";
bk.BackupSetName = dbName + " Backup";
bk.Database = dbName;

BackupDeviceItem bdi = new BackupDeviceItem("Test_Full_Backup1.bak",
DeviceType.File);
bk.Devices.Add(bdi);
bk.Incremental = false;
bk.SqlBackup(selectedServer);
bk.Devices.Remove(bdi);

// Restore
Restore rs = new Restore();
rs.NoRecovery = true;
rs.Action = RestoreActionType.Database;
rs.Devices.Add(bdi);
rs.Database = newDbName;
rs.ReplaceDatabase = true;

rs.RelocateFiles.Add(new RelocateFile("DBName", @"D:\SQL\Data\" + newDbName
+ ".mdf"));
rs.RelocateFiles.Add(new RelocateFile("DBName_Log", @"D:\SQL\Data\" +
newDbName + "_Log.ldf"));

rs.SqlRestore(selectedServer);

Author
1 Sep 2006 4:00 PM
Bob
Have you tried NoRecovery = false?

Show quote
"SPS Developer" wrote:

> I'm trying to backup and restore a database using SMO and the code completes
> with no errors, but the database on the SQL Server remains in the
> DBName (Restoring...) state and never seems to finish. All the files appear
> to be created though.
>
> Am I missing something in my code?  The code below lets the user select the
> database to backup, give it a new name and then restores it.  (Basically a
> database copy)
>
> Server selectedServer = new Server(comboServer.Text);
> string dbName = comboDB.SelectedItem.ToString();
> string newDbName = txtNewDbName.Text;
>
> Database db = selectedServer.Databases[dbName];

> Backup bk = new Backup();
> bk.Action = BackupActionType.Database;
> bk.BackupSetDescription = "Full backup of Database";
> bk.BackupSetName = dbName + " Backup";
> bk.Database = dbName;
>
> BackupDeviceItem bdi = new BackupDeviceItem("Test_Full_Backup1.bak",
> DeviceType.File);
> bk.Devices.Add(bdi);
> bk.Incremental = false;
> bk.SqlBackup(selectedServer);
> bk.Devices.Remove(bdi);
>
> // Restore
> Restore rs = new Restore();
> rs.NoRecovery = true;
> rs.Action = RestoreActionType.Database;
> rs.Devices.Add(bdi);
> rs.Database = newDbName;
> rs.ReplaceDatabase = true;
>
> rs.RelocateFiles.Add(new RelocateFile("DBName", @"D:\SQL\Data\" + newDbName
> + ".mdf"));
> rs.RelocateFiles.Add(new RelocateFile("DBName_Log", @"D:\SQL\Data\" +
> newDbName + "_Log.ldf"));
>
> rs.SqlRestore(selectedServer);
>
>
Author
1 Sep 2006 4:14 PM
SPS Developer
That did it.  Thanks.

Show quote
"Bob" wrote:

> Have you tried NoRecovery = false?
>
> "SPS Developer" wrote:
>
> > I'm trying to backup and restore a database using SMO and the code completes
> > with no errors, but the database on the SQL Server remains in the
> > DBName (Restoring...) state and never seems to finish. All the files appear
> > to be created though.
> >
> > Am I missing something in my code?  The code below lets the user select the
> > database to backup, give it a new name and then restores it.  (Basically a
> > database copy)
> >
> > Server selectedServer = new Server(comboServer.Text);
> > string dbName = comboDB.SelectedItem.ToString();
> > string newDbName = txtNewDbName.Text;
> >
> > Database db = selectedServer.Databases[dbName];
> > 
> > Backup bk = new Backup();
> > bk.Action = BackupActionType.Database;
> > bk.BackupSetDescription = "Full backup of Database";
> > bk.BackupSetName = dbName + " Backup";
> > bk.Database = dbName;
> >
> > BackupDeviceItem bdi = new BackupDeviceItem("Test_Full_Backup1.bak",
> > DeviceType.File);
> > bk.Devices.Add(bdi);
> > bk.Incremental = false;
> > bk.SqlBackup(selectedServer);
> > bk.Devices.Remove(bdi);
> >
> > // Restore
> > Restore rs = new Restore();
> > rs.NoRecovery = true;
> > rs.Action = RestoreActionType.Database;
> > rs.Devices.Add(bdi);
> > rs.Database = newDbName;
> > rs.ReplaceDatabase = true;
> >
> > rs.RelocateFiles.Add(new RelocateFile("DBName", @"D:\SQL\Data\" + newDbName
> > + ".mdf"));
> > rs.RelocateFiles.Add(new RelocateFile("DBName_Log", @"D:\SQL\Data\" +
> > newDbName + "_Log.ldf"));
> >
> > rs.SqlRestore(selectedServer);
> >
> >

AddThis Social Bookmark Button