jueves, 22 de noviembre de 2007

Herramientas Recuperación de Base de Datos

Saludos, en esta oportunidad les presento una herramienta que me salvó la cabeza hace unos días, el Recovery for SQL Server 3.0, una herramienta para recuperar archivos MDF corruptos y subirlos a su servidor de base de datos en unos pocos minutos. Les cuento que tenía una base de datos de alrededor 7 GB en un servidor SQL Server 2000 y con un plan de mantenimiento de backup semanal. El problema que tuvimos fue que la base de datos se corrompió y no la pudimos recuperar con el Enterprice Manager. Además, los últimos 3 backups de la base de datos estaban corruptos también, raro no??

Después de 4 horas perdidas sin saber que hacer e intentarlo todo, encontré esta herramienta que nos recuperó la data y la estructura del archivo MDF corrupto y luego de una hora y media de extracción de data logramos recuperar un alto porcentaje de la información, y al otro día al inicio de las labores teníamos todos nuestros servidores arriba. La herramienta es sencilla y fácil de usar, el único problema es el costo, que es bastante cara, pero en momento de desastre, quién no haría lo que fuese por levantar su empresa.

La ruta donde podemos encontrar esta herramienta es: http://officerecovery.com/mssql/?submit, espero que la información les ayude.

jueves, 15 de noviembre de 2007

Backups Automáticos MySQL Server

Les voy a presentar una herramienta que me ha hecho la vida un poco más fácil en la tarea de administrar el servidor de base de datos en MySQL en la organización de trabajo. Cada semana tenía la díficil tarea de realizar los backups de todas las bases de datos una a una. Investigando sobre como hacer un proceso automático y que sirviera para múltiples bases de datos encontré el AutoMySQLBackup, que es un script que se ejecuta en el mysqldump y nos permite realizar backups automáticos en Mysql. Algunos de los beneficios que nos brinda son:
  1. Backup de todas las base de datos en un solo archivo o en directorios y archivos diferentes por BD.
  2. Compresión automática de los backups al almacenarlo en disco con gzip o bzip2.
  3. Puede ejecutarse en un servidor remoto.
  4. Envía notificaciones por correo y el backup de la base de datos comprimido.
  5. Se le puede especificar el tamaño máximo del backup por correo.
  6. El backup puede ser diario, semanal, mensual como prefiera configurarlo.

Para esto solo se necesita tener mysqldump y (gzip o bzip2). Solo tienes que descargar el script de la siguiente dirección: http://sourceforge.net/projects/automysqlbackup/, copialo en el directorio /etc/cron.daily o en el directorio home y editas el archivo con los siguientes datos:

  • USERNAME=dbuser (El usuario debe contar con privilegios en la base de datos).
  • PASSWORD=password
  • DBNAMES="DB1 DB2 DB3" (Las base de datos debe estar en " " de lo contrario no trabaja)

Luego crea el ejecutable del archivo: :- chmod u+rwx y crear el directorio /backups y pones a correr tu backup automático.

martes, 13 de noviembre de 2007

Que es el transaction Log?

Como administrador de base de datos muchas veces tenemos un incoveniente con que la base de datos a crecido mucho, que no contamos con el espacio suficiente, que se necesitan más discos, etc. Al verificar nos damos cuenta que el Log de archivo de nuestra base de datos a crecido bastante, lo primero que deseamos es reducir el espacio del mismo, pero con la interrogante de que puede pasar si lo hacemos.
El transaction log se encarga de almacenar todas las acciones que realizamos en nuestra base de datos para identificar problemas en nuestro sistema o fallas de algún dispositivo. Además nos permite almacenar ejecuciones dentro de transacciones para luego ser aceptadas o rechazadas en caso de algún inconveniente. En caso de que el equipo se reinicie por problemas, las transacciones que quedan pendientes (Uncommited Transaction) son aceptadas o rechazadas.
Para visualizar el log de la base de datos debemos ejecutar el siguiente comando:
DBCC log ( {dbiddbname}, [, type={01234}] ) donde type es el tipo de salida siendo 2 la vista detallada y la 3 toda la información.
Si deseamos reducir el tamaño de nuestro Log ejecutamos las siguientes instrucciones:
BACKUP LOG basededatos WITH TRUNCATE_ONLY
go
DBCC SHRINKFILE (basededatos_Log, 10)
Si reducimos nuestro transaction log solo perdemos nuestras últimas ejecuciones, pero no afecta nuestra base de datos a menos que tengamos en el archivo un "uncommited transaction".
Espero que esta información sea de provecho.

jueves, 8 de noviembre de 2007

Problemas con Base de datos en Suspect

Imaginese que se encuentre en esta situación, usted es administrador de Base de datos, y al llegar un día a su lugar de trabajo se percata que hay una base de datos que se encuentra en una tonalidad gris y al lado tiene "(suspect)". Por ejemplo: "Databasename (Suspect)". La pregunta es que voy a hacer ahora, los usuarios no pueden accesar a sus sistemas, todos en la empresa lo están llamando porque el sistema está frizado y usted se pregunta ¿Cuál será el backup más actualizado que tengo y que habrá ocacionado esto?
La respuesta puede ser un problema de hardware (especialmente discos con sectores dañados) o algún device de la base de datos corrompido. Aquí les presento algunas acciones que debe tomar para evitar este tipo de error:
  1. Si la base de datos es de consultas, puede colocar la base de datos como solo lectura y los usuarios pueden tener acceso a la misma.
  2. SQL Server puede recuperar la base de datos automáticamente si tiene una falla mínima, puede ver este mensaje al lado de la misma (Recovery).
  3. Otra forma es darle un Detach a la DB y un Attach nuevamente para recuperar la base de datos.
  4. Si ninguna de estas acciones funciona y no tiene un backup actualizado puede probar con este procedure "sp_resetstatus [ @DBName = ] 'database'" que resetea el estatus de la base de datos en el sysdatabase y reparar los daños que tenga la base de datos en caso que se pueda reparar.

Si no tienen acceso a este procedures, aquí les dejo los fuentes con el que pueden crearlo y ejecutarlo:

IF EXISTS ( SELECT * from sysobjects where name = 'sp_resetstatus' )
DROP PROCEDURE sp_resetstatus
GO
CREATE PROC sp_resetstatus @dbname varchar(30) AS
DECLARE @msg varchar(80)
IF @@trancount > 0
BEGIN
PRINT 'Can''t run sp_resetstatus from within a transaction.'
RETURN (1)
END
IF suser_id() != 1
BEGIN
SELECT @msg = 'You must be the System Administrator (SA)'
SELECT @msg = @msg + ' to execute this procedure.'
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname) != 1
BEGIN
SELECT @msg = 'Database ' + @dbname + ' does not exist!'
PRINT @msg
RETURN (1)
END
IF (SELECT COUNT(*) FROM master..sysdatabases
WHERE name = @dbname AND status & 256 = 256) != 1
BEGIN
PRINT 'sp_resetstatus can only be run on suspect databases.'
RETURN (1)
END
BEGIN TRAN
UPDATE master..sysdatabases SET status = status ^ 256
WHERE name = @dbname
IF @@error != 0 OR @@rowcount != 1
ROLLBACK TRAN
ELSE
BEGIN
COMMIT TRAN
SELECT @msg = 'Database ' + @dbname + ' status reset!'
PRINT @msg
PRINT ''
PRINT 'WARNING: You must reboot SQL Server prior to '
PRINT ' accessing this database!'
PRINT ''
END
GO

Espero que estos les sirva.

viernes, 2 de noviembre de 2007

Como ejecutar una aplicación desde SQL.

Hola Jóvenes. Me estoy estrenando en el blog con esta publicación, así que espero brindarles en lo adelante muchas informaciones que les sirvan de soporte.

Entrando en materia, en ocasiones necesitamos que al ejecutar cierto Store Procedure, DTS, etc.; requerimos la utilización de alguna aplicación para que efectúe una operación secundaria. La aplicación, podemos ejecutarla (dispararla) mediante el Store Procedure "xp_cmdshell", utilizando la siguiente instrucción dentro del Query que estemos ejecutando:

Exec xp_cmdshell 'C:\WINDOWS\system32\calc.exe'

Este Store Procedure usualmente no está habilitado por lo que, es necesario solicitar autorización al DBA de los usuarios que van a utilizarlo. Además, en otros casos, es posible que no este habilitado el SP en la base de datos (Master), en dado caso, es necesario su configuración (para lo cual necesitamos privilegios de administrador) vía el SP "sp_configure" de la siguiente forma:

--Permitir que las opciones avanzadas puedan ser cambiadas.
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

--Permitir el uso de SP XP_CMDSHELL.
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

Hasta pronto.

Gráficas Empresariales en nuestras aplicaciones

Al momento de desarrollar herramientas empresariales y/o estadísticas, una parte muy importante es como vamos a mostrar la información a los usuarios finales. Una buena alternativa para presentarles la información es mediante la implementación de gráficos ya que esto nos permite desplegar la información de una forma fácil y sencilla de ver por parte de los usuarios finales (especialmente para ejecutivos corporativos que solo buscan ver el resultado final y obvian los detalles).


Estos gráficos los podemos añadir a nuestras aplicaciones Web mediante un componente (Api) llamado ChartDirector desarrollado por Advanced Software Engineering.
















Este componente te permite añadirles elegantes gráficos profesionales a tus herramientas Web o de Escritorio completamente personalizado y de una forma sencilla. Este componente puede ser descargado desde la siguiente dirección: http://www.advsofteng.com/download.html y tiene soporte para diversos lenguajes de programación como son: VB / COM / ASP / .Net / PHP / Java / ColdFusion / Perl, entre otros. Además este componente se puede ejecutar en diferentes plataformas como Linux, Windows y Solaris. La herramienta es muy fácil de usar, rápida, poderosa y tiene una documentación muy completa con numerosos ejemplos.

Existen otros herramienta para implementar gráficos en nuestras herramientas como son Dundas, GD Library, entre otras.

jueves, 1 de noviembre de 2007

Más Optimizaciones de SQL Server

Saludos, después del paso del huracán Noel por nuestro país (República Dominicana) volvemos a la carga con las publicaciones sobre Base de Datos y Programación, hoy buscando noticias en Internet sobre mejoras de SQL Server encontré con un link que nos dice como mejorar y optimizar nuestro rendimiento de CPU de SQL Server y que nos muestra algunos métodos que le habíamos mencionado con anterioridad por esta vía y otras más que ayudan a mejorar nuestro rendimiento de base de datos.

Aquí le dejo el link: http://www.microsoft.com/technet/technetmag/issues/2007/10/SQLCPU/default.aspx?loc=es/

Espero que le sirva.