http://smart-generator.com/cursos/post/2009/08/Como-rescatar-de-las-llamas-del-infierno-un-MDF-sin-el-LDF.aspx
Qué hacer si ya valió?
Cabe mencionar que la siguiente alternativa solo funciona para SQL Server y no es una opción muy “elegante” al problema, yo sigo la siguiente filosofía: “A problemas piñatas, soluciones piñatas”, no por algo tengo un diploma a las “marranadas” (hablando de soluciones tecnológicas).
La solución propuesta sería:
1. Crear las bases de datos afectadas en blanco, detener el servicio de SQL Server y cambiar el MDF por el que rescataron del server caído (Q.E.P.D).
2. Eliminar el LDF que se generó en blanco y reiniciar el servicio de SQL. Dado esto debería marcar la base de datos como suspect.
3. Posicionarse en la base de datos MASTER (USE MASTER)
4. Cambiar las opciones de configuración global del servidor actual para que permita hacer cambios al mismo.
EXEC sp_Configure 'ALLOW UPDATES', 1
RECONFIGURE WITH OVERRIDE
5. Cambiar el estado de la base de datos a MODO DE EMERGENCIA.
UPDATE SYSDATABASES SET STATUS = 32768 WHERE NAME = 'NombreBaseDeDatos'
6. Cambiar las opciones de configuración global del servidor actual para que ya no permita hacer cambios al mismo
EXEC sp_Configure 'ALLOW UPDATES', 0
RECONFIGURE WITH OVERRIDE
7. Cambiar la base de datos afectada a opción de usuario simple.
EXEC sp_DBOption 'ArchivoIntegracion', 'SINGLE USER', 'TRUE'
8. Reconstruir el LOG de transacciones (LDF) de la base de datos (MDF).
DBCC REBUILD_LOG ('NombreBaseDeDatos', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\NombreBaseDeDatos_Log.ldf')
9. Cambiar las opciones de configuración global del servidor actual para que permita hacer cambios al mismo.
EXEC sp_Configure 'ALLOW UPDATES', 1
RECONFIGURE WITH OVERRIDE
10. Cambiar el estado de la base de datos a MODO NORMAL.
UPDATE SYSDATABASES SET STATUS = 0 WHERE NAME = 'NombreBaseDeDatos'
11. Cambiar las opciones de configuración global del servidor actual para que ya no permita hacer cambios al mismo
EXEC sp_Configure 'ALLOW UPDATES', 0
RECONFIGURE WITH OVERRIDE
12. Cambiar la base de datos afectada a opción de usuarios múltiples.
EXEC sp_dboption 'ArchivoIntegracion', 'SINGLE USER', 'FALSE'
Y voila, ya quedó milagrosamente rescatado nuestro MDF sin necesidad de contar con el LDF respectivo. Josué ya puede estar más tranquilo al respecto y tener más cuidado para la próxima vez que ocurra esto en su organización (que esperemos y jamás vuelva a suceder).
jueves, 29 de abril de 2010
viernes, 19 de febrero de 2010
Habilitar escritorio remoto remotamente
http://gballadares.spaces.live.com/Blog/cns!A402FBAD95DBB2A3!926.entry
lunes, 15 de febrero de 2010
Optimizacion de la memoria virtual
He aqui un buen articulo acerca de la optimizacion de la memoria virtual de los equipos windows
http://es.kioskea.net/faq/174-optimizar-la-memoria-virtual
http://es.kioskea.net/faq/174-optimizar-la-memoria-virtual
miércoles, 3 de febrero de 2010
Laouz.exe
Este es un pequeño virus que ataca las mamorias Flash (USB) y presenta los siguientes Sintomas:
* Creacion de carpetas de accesos directos a Mi musica, Mis documentos, Mis videos, etc en la raiz de la memoria USB
* Creacion de una particion de 200 MB en la USB infectada donde se autoresguarda y protege
* Mal funcionamiento de Internet Explorer 8 y posible congelamiento del equipo
Sistemas suceptibles a ser atacados:
*Windows XP
*Windows Vista
Solucion:
Ningun antivirus que conozco lo detecta, sin embargo es posible localizarlo y eliminarlo con otro tipo de herramientas como las de mantenimiento preventivo y correctivo, por ejemplo con la suite TUNE UP UTILITIES
0.- Quita la USB infectada del sistema, mas tarde la limpiaremos del virus
1.- Verifica mediante el tune up cuales programas han sido agregados a los programas que inician automaticamente cuando enciendes tu equipo, ahi encontraras el programa "Laouz" y sobre este ultimo da clic dececho, propiedades para ver donde se encuenta, esto te da la primer pista para borrarlo.
2.- busca en el registro de windows mediante el comando regedit la entrada "HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/RUN/Laouz" o bien "HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/RUN-/Laouz"
borren estas dos entradas en el registro
3.-inicien su equipo con un sistema que no sea windows o con el disco de instalacion de windows para entrar a la consola del sistema y eliminen el archivo "c:\Documents and settings\Administrador o Usuario Actual\Laoux.exe", tambien borren de su memoria flash todos los archivos que tengan este nombre o un nombre parecido, generalmente se habran copiado en la raiz y en la particion de 200 MB bloqueada, pueden aprovechar para respaldar la informacion IMPORTANTE de su USB y formatearla con sistema FAT, si estaba formateada con sistema NTFS deberan respaldar solo los archivos mas importantes desde windows antes de iniciar el proceso de borrado del virus
4.-reinicien el sistema, verifiquen nuevamente el registro y esta ubicacion del disco C y habran terminado de limpiar su equipo
* Creacion de carpetas de accesos directos a Mi musica, Mis documentos, Mis videos, etc en la raiz de la memoria USB
* Creacion de una particion de 200 MB en la USB infectada donde se autoresguarda y protege
* Mal funcionamiento de Internet Explorer 8 y posible congelamiento del equipo
Sistemas suceptibles a ser atacados:
*Windows XP
*Windows Vista
Solucion:
Ningun antivirus que conozco lo detecta, sin embargo es posible localizarlo y eliminarlo con otro tipo de herramientas como las de mantenimiento preventivo y correctivo, por ejemplo con la suite TUNE UP UTILITIES
0.- Quita la USB infectada del sistema, mas tarde la limpiaremos del virus
1.- Verifica mediante el tune up cuales programas han sido agregados a los programas que inician automaticamente cuando enciendes tu equipo, ahi encontraras el programa "Laouz" y sobre este ultimo da clic dececho, propiedades para ver donde se encuenta, esto te da la primer pista para borrarlo.
2.- busca en el registro de windows mediante el comando regedit la entrada "HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/RUN/Laouz" o bien "HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/WINDOWS/RUN-/Laouz"
borren estas dos entradas en el registro
3.-inicien su equipo con un sistema que no sea windows o con el disco de instalacion de windows para entrar a la consola del sistema y eliminen el archivo "c:\Documents and settings\Administrador o Usuario Actual\Laoux.exe", tambien borren de su memoria flash todos los archivos que tengan este nombre o un nombre parecido, generalmente se habran copiado en la raiz y en la particion de 200 MB bloqueada, pueden aprovechar para respaldar la informacion IMPORTANTE de su USB y formatearla con sistema FAT, si estaba formateada con sistema NTFS deberan respaldar solo los archivos mas importantes desde windows antes de iniciar el proceso de borrado del virus
4.-reinicien el sistema, verifiquen nuevamente el registro y esta ubicacion del disco C y habran terminado de limpiar su equipo
miércoles, 27 de enero de 2010
Clase para conectarse a base de datos C#
http://comunicandotj.wordpress.com/2009/02/27/basedatos_csharp/
Pues bien, les mostrare la forma en como hasta hoy he trabajado con Bases de Datos tanto SQLExpress como SQL Server. Tal ves existan algunas otras mejores maneras de hacerlo, si conoces alguna porfavor hasmelo saber.
Primero que nada, les dire que Necesitamos hacer una Clase de Conexion la cual nos sirve tanto para Desktop Application como para Web Site.
Clase Conexion:
/* Importamos las Librerias Necesarias para Trabajar */
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
/* Creamos la Clase */
class Conexion
{
private SqlConnection Con; // Obj Conexion
public Conexion()
{
string DtsConection = “”; // Contendra los Datos las Conexion.
/* Para trabajar con el servidor SQLExpress de la maquina */
string DtsConection = “Data Source=.\SQLEXPRESS;Initial Catalog=NOMBRE_BD; ” + “Integrated Security=True;”;
/* Para trabajar con Archivo de BD (.mdf), si que este montado en SQLExpress */
//DtsConection = “Server=.\SQLExpress;AttachDbFilename=C:\Direccion\NOMBRE.mdf; Database=NOMBRE;
Trusted_Connection=Yes;”;
/* Para trabajar con un servidor remoto Ya sea una Base de datos Remota o en Caso de WEB SITE cuando la pongamos en el Host */
/* Necesitamos la IP del Servidor de BD, el puerto generalmente es 1533, Usuario y Password lo proporciona el Hostring */
//DtsConection = “Data Source=72.17.135.40,1533; Database=NOMBRE_BD; User ID=USUARIO; Password=PASSWORD;”;
Con = new SqlConnection(DtsConection);
}
public void Abrir() // Metodo para Abrir la Conexion
{
Con.Open();
}
public void Cerrar() // Metodo para Cerrar la Conexion
{
Con.Close();
}
public DataSet Ejecutar(string Comando, string Tabla) // Metodo para Ejecutar Comandos
{
SqlDataAdapter CMD = new SqlDataAdapter(Comando, Con); // Creamos un DataAdapter con el Comando y la Conexion
DataSet DS = new DataSet(); // Creamos el DataSet que Devolvera el Metodo
CMD.Fill(DS, Tabla); // Ejecutamos el Comando en la Tabla
return DS; // Regresamos el DataSet
}
} // Fin de la Clase
Ahora que Ya tenemos Nuestra Clase Conexion, lo unico que necesitamos para Conectarnos a una Base de Datos o Ejecuar un Comando, etc. es:
Crear un Objeto del Tipo Conexion.
Conexion CN = new Conexion();
Abrir la Conexion
CN.Abrir();
Ejecutar los Comando que Deseemos.
Recordemos que el Metodo Ejecutar no Regresa un Objeto del tipo DataSet que es como una Colecion de Tablas. Y si queremos poner el resultado del comando en una Tabla hariamos lo siguiente:
DataTable Tabla = CN.Ejecutar(“SELECT * FROM USUARIOS”,”USUARIOS”).Tables[0];
Antes de Terminar permiten Recomendarles la forma de utilizar la clase Conexion y el Manejo de Excepciones.
Try
{
CN.Abrir();
DataTable DT = CN.Ejecutar(“COMANDO…”,”TABLA”).Tables[0];
CN.Cerrar();
}
Catch (Exception ex) // Maneja los Posibles Errores
{
// Para Mostrar la origen del Error
MessageBox.Show(ex.ToString());
}
Finally
{
CN.Cerrar();// Evitar que la Conexion quede Abierta
}
Pues bien, les mostrare la forma en como hasta hoy he trabajado con Bases de Datos tanto SQLExpress como SQL Server. Tal ves existan algunas otras mejores maneras de hacerlo, si conoces alguna porfavor hasmelo saber.
Primero que nada, les dire que Necesitamos hacer una Clase de Conexion la cual nos sirve tanto para Desktop Application como para Web Site.
Clase Conexion:
/* Importamos las Librerias Necesarias para Trabajar */
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
/* Creamos la Clase */
class Conexion
{
private SqlConnection Con; // Obj Conexion
public Conexion()
{
string DtsConection = “”; // Contendra los Datos las Conexion.
/* Para trabajar con el servidor SQLExpress de la maquina */
string DtsConection = “Data Source=.\SQLEXPRESS;Initial Catalog=NOMBRE_BD; ” + “Integrated Security=True;”;
/* Para trabajar con Archivo de BD (.mdf), si que este montado en SQLExpress */
//DtsConection = “Server=.\SQLExpress;AttachDbFilename=C:\Direccion\NOMBRE.mdf; Database=NOMBRE;
Trusted_Connection=Yes;”;
/* Para trabajar con un servidor remoto Ya sea una Base de datos Remota o en Caso de WEB SITE cuando la pongamos en el Host */
/* Necesitamos la IP del Servidor de BD, el puerto generalmente es 1533, Usuario y Password lo proporciona el Hostring */
//DtsConection = “Data Source=72.17.135.40,1533; Database=NOMBRE_BD; User ID=USUARIO; Password=PASSWORD;”;
Con = new SqlConnection(DtsConection);
}
public void Abrir() // Metodo para Abrir la Conexion
{
Con.Open();
}
public void Cerrar() // Metodo para Cerrar la Conexion
{
Con.Close();
}
public DataSet Ejecutar(string Comando, string Tabla) // Metodo para Ejecutar Comandos
{
SqlDataAdapter CMD = new SqlDataAdapter(Comando, Con); // Creamos un DataAdapter con el Comando y la Conexion
DataSet DS = new DataSet(); // Creamos el DataSet que Devolvera el Metodo
CMD.Fill(DS, Tabla); // Ejecutamos el Comando en la Tabla
return DS; // Regresamos el DataSet
}
} // Fin de la Clase
Ahora que Ya tenemos Nuestra Clase Conexion, lo unico que necesitamos para Conectarnos a una Base de Datos o Ejecuar un Comando, etc. es:
Crear un Objeto del Tipo Conexion.
Conexion CN = new Conexion();
Abrir la Conexion
CN.Abrir();
Ejecutar los Comando que Deseemos.
Recordemos que el Metodo Ejecutar no Regresa un Objeto del tipo DataSet que es como una Colecion de Tablas. Y si queremos poner el resultado del comando en una Tabla hariamos lo siguiente:
DataTable Tabla = CN.Ejecutar(“SELECT * FROM USUARIOS”,”USUARIOS”).Tables[0];
Antes de Terminar permiten Recomendarles la forma de utilizar la clase Conexion y el Manejo de Excepciones.
Try
{
CN.Abrir();
DataTable DT = CN.Ejecutar(“COMANDO…”,”TABLA”).Tables[0];
CN.Cerrar();
}
Catch (Exception ex) // Maneja los Posibles Errores
{
// Para Mostrar la origen del Error
MessageBox.Show(ex.ToString());
}
Finally
{
CN.Cerrar();// Evitar que la Conexion quede Abierta
}
martes, 26 de enero de 2010
Suscribirse a:
Entradas (Atom)
