|
database
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Restore problem using SMO and SqlRestorewith 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); 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); > > 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); > > > > |
|||||||||||||||||||||||