Mostrando entradas con la etiqueta Base de Datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Base de Datos. Mostrar todas las entradas

martes, 8 de marzo de 2011

Conexión ODBC en Windows 7

Deseaba configurar una máquina con Windows 7 para que pudiera conectarse a través de ODBC con un servidor SQL Server 2000, y a pesar que la configuración terminaba exitosamente, la aplicación no podía conectarse.

Me parecía raro también que al momento de configurar el ODBC no miraba la larga lista de drivers que normalmente miro sino que solamente me aparecía uno.

El problema era que mi versión del Windows es de 64 bits y existen dos aplicaciones administradoras de ODBC, una de 32-bits y otra de 64-bits. La versión de 32 bits se encuentra en la carpeta %systemdrive%\Windows\SysWow64 y la de 64bits se encuentra en %systemdrive%\Windows\System32.

La versión de 32 bits muestra el DSN de sistema de 32 bits, DSN de usuario de 32 bits y DSN de usuario de 64 bits. La versión de 64 bits muestra el DSN de sistema de 64 bits, DSN de usuario de 32 bits y DSN de usuario de 64 bits.

Así que corriendo la versión correcta del administrador, se puede solucionar el problema.

Más información en http://support.microsoft.com/kb/942976

jueves, 25 de noviembre de 2010

Pérdida de datos en SQL Server

Si por error has perdido ciertos datos en tu base de datos SQL Server, ya sean registros o tablas completas, y el último backup que tienes es demasiado viejo y no contiene los datos que necesitas recuperar, existe una manera para poder recuperar tu información por completo.

Una vez que se ha realizado un commit sobre las transacciones en una base de datos, no puedes ejecutar un rollback para deshacer esta operación; así que necesitarás de algún backup para recuperar tu información. Si tienes un backup lo suficiente nuevo como para restaurar tus datos, pues no tendrás ningún problema, pero si no lo tienes aún asi puedes recuperarlos siguiendo estos pasos:

1. Realiza un backup de transacciones de tu base de datos. Entra al SQL Server Enterprise Manager y sobre tu base de datos presiona el botón derecho. Selecciona la opción Todas las tareas y luego Copia de seguridad de la base de datos....


En la ventana de copia de seguridad selecciona la opción Registro de transacciones e indica el lugar donde deseas que se almacene este backup y asignale una extensión trn.


2. Restaura el backup más nuevo que tengas. Busca el backup más nuevo que tengas y restauralo preferiblemente en otro servidor. Si no cuentas con otro servidor, puedes restaurarlo en una nueva base de datos pero asegurate de cambiar el nombre del archivo físico donde será restaurado para no sobreescribir la base de datos original. Esta restauración se debe realizar con ciertos parámetros especiales. Si la restauración se realizará a través de código utiliza la siguiente sintaxis:

RESTORE DATABASE NuevaBD
FROM DISK = 'C:\Backups\ultimoBackup.bak'
WITH
MOVE 'BDPrevia' TO 'C:\Data\NuevaBD.mdf',
MOVE 'BDPrevia_Log' TO 'C:\Data\NuevaBD_Log.ldf',
NORECOVERY

Las sentencias MOVE sirven para indicar adonde se ubicarán físicamente los archivos lógicos de la base de datos. Esto es lo que nos evitará sobreescribir la base de datos ya existente.

NORECOVERY lo utilizamos para indicarle que sobre esta Base de Datos restauraremos un archivo de transacciones, por lo que la base de datos no quedará operativa sino hasta después de realizar esta restauración donde le indicaremos que lo haga con RECOVERY.

Si la restauración de la base de datos la haremos a través de la interfaz gráfica hay que asegurarse de cambiar el nombre del archivo físico del archivo mdf y del archivo ldf e indicarle que la base de datos quedará no operativa tal como se indica en la siguiente figura:


Si se utiliza la versión Studio Express del SQL Server Management, estos mismos parámetros pueden ser configurados en la ventana de restauración en la ficha "Options".

Si no tienes ningún backup no podrás realizar la recuperación de tus datos, o por lo menos no conozco ninguna forma, si lográs hacerlo por favor comentalo en este post :)


3. Restaura el archivo de transacciones. El último paso es restaurar el archivo de transacciones especificando la fecha anterior a la pérdida de los datos; es decir, que si perdimos los datos el 15 de noviembre de 2010 a la 1 p.m., podemos indicarle que restaure las transacciones hasta cualquier fecha antes de esta en la cual estemos seguros que estaban todos los datos que necesitamos antes de ser borrados. A través de código se utilizaría una sintaxis como esta:

RESTORE LOG BDNueva
FROM DISK = 'C:\Backups\transacciones.trn'
WITH
STOPAT=N'11/15/2010 8:00:00 AM',
RECOVERY

A través de la interfaz gráfica en la versión Studio Express presiona el botón derecho sobre la base de datos (la cual indicará que está en estado de Restauración) y selecciona Tasks, luego Restore y luego Transaction Log... Después debes indicarle que la base de datos debe quedar operativa e indicarle el punto en el tiempo hasta el que quieres restaurar las transacciones.

Listo, con esto tendrás tus datos en BDNueva y podrás sacar de ella lo que necesites. Básicamente lo que este proceso realiza es restaurar una base de datos vieja y luego ejecutar de nuevo las transacciones que se realizaron hasta cierta fecha, generando así nuevamente los datos que necesitamos.

miércoles, 8 de agosto de 2007

Olvidaste sacar el backup de postgres!!

Puede ser que alguna vez te suceda que has olvidado sacar el backup de tu base de datos en postgreSQL y sucede algo trágico como que se arruina el disco, el Sistema Operativo no arranca, o se te venció la licencia de tu Windows pirateado :P, etc.

Ya no hay manera de entrar al SO y sacar un backup de la base de datos, ¿cómo hacer para recuperar la información?

Si logras recuperar la subcarpeta data almacenada en la carpeta de Postgres (%Program Files%\PostgreSQL\8.0) entonces todavía tienes tu información. No es tan sencillo como instalar postgres y cambiar esta carpeta, puede ser que te pases horas intentando resolverlo de esa forma (yo lo hice); pero el procedimiento es sencillo:

1) Copia la carpeta data que recuperaste en cualquier lado.
2) Instala PostgreSQL
3) Durante el proceso de instalación en la ventana "Installation Options" selecciona "Data Directory", luego presion el botón "Browse" y busca la carpeta que copiaste.
4) En la ventana "Initialize data cluster" desmarca la opción "initialize data cluster"
5) Prosigue con la instalación, reinicia y listo.

Eso resolverá tu problema y tus datos estarán de vuelta.

viernes, 3 de agosto de 2007

Conexión de PHP 5 con SQL Server

Decidí dejar el IIS que viene en el SBS 2003 e instalé Apache 2.0.59 para el sitio web de la empresa. Dado que las páginas serían creadas dinámicamente decidi utilizar PHP 5 y una base de datos SQL Server 2000 con Service Pack 4.

Instalé el PHP e hice todas las configuraciones para que funcionara con el Apache. No es muy complicado, siguiendo las instrucciones que vienen con el PHP se puede hacer sin problemas. Pero a la hora de hacer la conexión con SQL Server no funcionó, incluso siguiendo las instrucciones del PHP.

Cambié el archivo php.ini, habilitando la linea

extension = php_mssql.dll

y nada. Revisé mi configuración de apache, de php, de SQL...todo parecía estar bien. Luego de mucho intentar sin éxito un amigo me dió la respuesta: uno de los archivos del php viene malo. Me mandó el ntwdblib.dll, lo sustituí por el que tenía y listo, la pagina funciona perfectamente.