public Boolean RestoreDatabase(String databaseName, String filePath, String serverName, String userName, String password, String dataFilePath, String logFilePath) { Boolean Co = true; Restore sqlRestore = new Restore(); //sqlRestore.NoRecovery = true; sqlRestore.SetPassword("BMBez2010"); //sqlRestore.SetMediaPassword("123456"); BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File); sqlRestore.Devices.Add(deviceItem); sqlRestore.NoRecovery = false; sqlRestore.ReplaceDatabase = true; sqlRestore.Database = databaseName; ServerConnection connection; // for Windows Authentication if (userName == "") { SqlConnection sqlCon = new SqlConnection(@"Data Source=" + serverName + @"; Integrated Security=True;"); connection = new ServerConnection(sqlCon); } // for Server Authentication else { connection = new ServerConnection(serverName, userName, password); } Server sqlServer = new Server(connection); Database db = sqlServer.Databases[databaseName]; sqlServer.KillAllProcesses(databaseName); sqlRestore.Action = RestoreActionType.Database; String dataFileLocation = dataFilePath + databaseName + ".mdf"; String logFileLocation = logFilePath + databaseName + "_Log.ldf"; db = sqlServer.Databases[databaseName]; RelocateFile rf = new RelocateFile(databaseName, dataFileLocation); 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.PercentCompleteNotification = 10; sqlRestore.PercentComplete += new PercentCompleteEventHandler(sqlRestore_PercentComplete); try { sqlRestore.SqlRestore(sqlServer); } catch (Exception ex) { // MessageBox.Show(ex.InnerException.ToString()); Co = false; } //db = sqlServer.Databases[databaseName]; //db.SetOnline(); sqlServer.Databases[databaseName].SetOnline(); sqlServer.Refresh(); return(Co); }