public static bool Restaurar(string Nombre, string Ubicacion) { UsuarioEntidad usuarioAutenticado = new UsuarioEntidad(); HttpContext Current = HttpContext.Current; usuarioAutenticado = (UsuarioEntidad)Current.Session["Usuario"]; try { if (usuarioAutenticado == null) { return(false); } if (!usuarioAutenticado.Permisos.Exists(x => x.NombreIFamPat == "Admin")) { throw new InvalidOperationException("No posee los permisos suficientes"); } if (!string.IsNullOrWhiteSpace(Nombre) && !string.IsNullOrWhiteSpace(Ubicacion)) { string stringPararProcesos = "DECLARE @ProcessId varchar(4) " + Environment.NewLine + "DECLARE CurrentProcesses SCROLL CURSOR FOR" + Environment.NewLine + "select spid from sysprocesses where dbid = (select dbid from sysdatabases where name = 'ECommerce' ) order by spid " + Environment.NewLine + "FOR READ ONLY" + Environment.NewLine + "OPEN CurrentProcesses" + Environment.NewLine + "FETCH NEXT FROM CurrentProcesses INTO @ProcessId" + Environment.NewLine + "WHILE @@FETCH_STATUS <> -1" + Environment.NewLine + "BEGIN" + Environment.NewLine + " Exec ('KILL ' + @ProcessId)"+ Environment.NewLine + " FETCH NEXT FROM CurrentProcesses INTO @ProcessId"+ Environment.NewLine + " End" + Environment.NewLine + "CLOSE CurrentProcesses" + Environment.NewLine + "DeAllocate CurrentProcesses"; string stringRestaurar = "RESTORE DATABASE " + Nombre + " FROM DISK = '" + Ubicacion + "' WITH REPLACE, RECOVERY"; //FRAMEWORK.Persistencia.MotorBD.ConexionIniciarParaRestauracion(); //string connectionStringNameRest; //if (ConfiguracionBase[1].UsuarioBD != null && !string.IsNullOrEmpty(ConfiguracionBase[1].UsuarioBD)) // connectionStringNameRest = ConfiguracionBase[1].DataSourceBD + ConfiguracionBase[1].InitialCatalogBD + ConfiguracionBase[1].UsuarioBD + ConfiguracionBase[1].PasswordBD; //else // connectionStringNameRest = ConfiguracionBase[1].DataSourceBD + ConfiguracionBase[1].InitialCatalogBD + ConfiguracionBase[1].SSPI; SqlClientUtility.ExecuteNonQueryRestaurar(CommandType.Text, stringPararProcesos); SqlClientUtility.ExecuteNonQueryRestaurar(CommandType.Text, stringRestaurar); //FRAMEWORK.Persistencia.MotorBD.EjecutarNonQuery(CommandType.Text, stringPararProcesos); //FRAMEWORK.Persistencia.MotorBD.EjecutarNonQuery(CommandType.Text, stringRestaurar); return(true); } return(false); } catch (Exception es) { throw; } }
public static bool Restaurar(string Nombre, string Ubicacion) { UsuarioEntidad usuarioAutenticado = new UsuarioEntidad(); HttpContext Current = HttpContext.Current; usuarioAutenticado = (UsuarioEntidad)Current.Session["Usuario"]; try { if (usuarioAutenticado == null) { return(false); } if (!usuarioAutenticado.Permisos.Exists(x => x.NombreIFamPat == "Admin")) { throw new InvalidOperationException("No posee los permisos suficientes"); } if (!string.IsNullOrWhiteSpace(Nombre) && !string.IsNullOrWhiteSpace(Ubicacion)) { string stringPararProcesos = "DECLARE @ProcessId varchar(4) " + Environment.NewLine + "DECLARE CurrentProcesses SCROLL CURSOR FOR" + Environment.NewLine + "select spid from sysprocesses where dbid = (select dbid from sysdatabases where name = 'HelperDataBase' ) order by spid " + Environment.NewLine + "FOR READ ONLY" + Environment.NewLine + "OPEN CurrentProcesses" + Environment.NewLine + "FETCH NEXT FROM CurrentProcesses INTO @ProcessId" + Environment.NewLine + "WHILE @@FETCH_STATUS <> -1" + Environment.NewLine + "BEGIN" + Environment.NewLine + " Exec ('KILL ' + @ProcessId)"+ Environment.NewLine + " FETCH NEXT FROM CurrentProcesses INTO @ProcessId"+ Environment.NewLine + " End" + Environment.NewLine + "CLOSE CurrentProcesses" + Environment.NewLine + "DeAllocate CurrentProcesses"; string stringRestaurar = "RESTORE DATABASE " + Nombre + " FROM DISK = '" + Ubicacion + "' WITH REPLACE, RECOVERY"; //string stringRestaurar = "RESTORE DATABASE " + Nombre + " FROM DISK = '" + Ubicacion + "' WITH MOVE, RECOVERY"; SqlClientUtility.ExecuteNonQueryRestaurar(CommandType.Text, stringPararProcesos); SqlClientUtility.ExecuteNonQueryRestaurar(CommandType.Text, stringRestaurar); return(true); } return(false); } catch (Exception es) { throw; } }