lunes, 6 de diciembre de 2010

Microsoft Exchange 2010 en Windows Server 2008 R2

Debido a las limitantes que tiene Exchange 2003 (y además para estar actualizado) decidí migrar mi servidor de correos a un Exchange 2010 en un Windows Server 2008 R2. Instalarlo se miraba más complicado que lo que supuse y encontrar instrucciones que me guiarán mucho más. Busque en varios artículos de Microsoft pero no lograba encontrar una descripción paso a paso de lo que debía hacer.

Después de mucho buscar, encontré este artículo que me pareció excelente: http://www.experts-exchange.com/Software/Server_Software/Email_Servers/Exchange/A_2881-Migrate-Small-Business-Server-2003-to-Exchange-2010-and-Windows-2008-R2.html, muestra los pasos a detalle y muy bien explicados.

Solamente tuve dos pequeños problemas, de los cuales no se mencionaba nada en el artículo:

1) Al momento de instalar el Exchange, me tiraba un error de llamada a procedimientos remotos (RPC) en el servidor Exchange 2003, por lo que no podía instalar la funcionalidad de Hub Transport o Transpote de concentradores y detenía la instalación. Después de investigar un poco, me di cuenta que debía entrar a mi ISA Server, instalado en el servidor Exchange, y en la sección configuración -> complementos deshabilitar los Filtros RPC. Una vez hecho esto, debi instalar de nuevo las caracteristicas que hacían falta y listo.

2) Una vez que trasladaba los buzones de los usuarios, tenía un problema: los usuarios en el exchange 2003 podían comunicarse hacia el exterior y hacia el exchange 2010; pero los usuarios en el exchange 2010 solamente podían comunicarse entre ellos. Este problemita me costó más que el anterior ¡porque habían mil opiniones en Internet! El mensaje que recibía decía que existía un error de Socket y que la comunicación había sido cortada; encontré el problema: de nuevo, tenía problemas en mi ISA Server por tener los puertos SMTP cerrados. Una vez resuelto esto me aparecía "Dirección IP de destino principal 451 4.4.0 ha respondido con: "451 5.7.3 no se puede conseguir la autenticación del servidor de Exchange".". Este problema se debía a que en el servidor Exchange 2003 hay que habilitar la Autenticación de Windows Integrada, tal como se indica en este artículo de Microsoft: http://support.microsoft.com/kb/979175/es.
Una vez resuelto esos dos problemas, mi exchange se encuentra trabajando perfectamente. ¡A seguirlo travesiando entonces para ver qué nuevas cosas interesantes trae! :)

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, 10 de noviembre de 2010

Backup del correo

Una de las ventajas que ofrece el servidor de correos Microsoft Exchange es la facilidad de trasladar el buzón de un usuario desde una computadora a otra sin demasiado esfuerzo; además de esto, contamos con un backup permanente del buzón de cada uno de los usuarios de la empresa.

Microsoft Outlook puede conectarse a un servidor Exchange local, de manera que el buzón del usuario se almacenará en ambos equipos: en la computadora del usuario en un archivo .ost (offline storage table, buzón sin conexión) y en el servidor Exchange.

Los archivos ost permiten a los usuarios accesar a su correo aun cuando el outlook no se encuentre conectado al servidor Exchange; una vez que se conecte, los buzones se sincronizarán. Cuando Outlook se configura para trabajar sin el Exchange, trabaja sobre archivos .pst (personal storage table) que almacena el buzón y demás carpetas del usuario.

Como el buzón en realidad se encuentra almacenado en el servidor, si deseamos formatear la computadora de un usuario o trasladarlo a una nueva computadora, no necesitamos sacar backup de su correo; ya que al configurar el outlook en la nueva computadora, éste se sincronizará con el servidor y creará una copia del buzón almacenado en él en el archivo .ost. Pero hay que tener mucho cuidado con aquellos usuarios que utilicen equipos portátiles y trabajen en sus casas con el outlook, porque si les formateamos sus computadoras antes de que éstas realicen la sincronización con el servidor, los correos que hayan enviado o recibido mientras se encontraban desconectados nunca se almacenaron en el servidor por lo tanto se perderán. Por tal razón, hay que encender la computadora, abrir el outlook, asegurarse que esté conectado con el Exchange y presionar Enviar/Recibir para permitir que la sincronización se lleve a cabo antes de realizar el formateo.

De no tener este cuidado puede ser que nos toque tener que explicarle al usuario lo que ha pasado con esos correos que ha enviado desde su casa el día anterior, y eso...no será tarea fácil.

viernes, 23 de abril de 2010

Introducción a Motores 3D (parte 3)

Projection Transformation y Perspective Division

En el post anterior mencionaba un poco acerca de la Modelview Transformation. Como resultado de esta transformación se obtienen las coordenadas de vista, estas son las coordenadas desde el punto de vista del observador. El siguiente paso es la Projection Transformation y Perspective Division, donde se determina que objetos y/o partes de estos serán mostrados en la pantalla. Además hace un calculo del eje z ya que como nuestro monitor es en 2D debe hacer una transformación para representar objetos 3D, y así poder simular aquellas caras de los objetos que se encuentran más lejos del observador.





En la figura, los objetos contenidos dentro del plano a y b son los que se proyectarán en pantalla. Estos planos se determinan a través de la función glFrustum o glPerspective. También puede generarse una proyección paralela, con todos los objetos contenidos en un paralelogramo, esto se logra a través de la función glOrtho. Pero para producir proyecciones en perspectiva se utilizan las mencionadas primero.


Viewport Transformation

La última transformación por la que pasan cada uno de los puntos es la Viewport Transformation. Ésta básicamente consiste en transformar las coordenadas normalizadas de los puntos en coordenadas de la ventana donde se mostrarán. Se utiliza la función glViewport para indicarle a OpenGL los parámetros que deberá utilizar para realizar la transformación.

Un ejemplo de la configuración del OpenGL para estas transformaciones podría ser así:

const float ar = (float) width / (float) height;

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity() ;

glViewport establece las medidas de la pantalla y glFrustum establece la perspectiva para la representación de los objetos. Nótese que se establece GL_PROJECTION como la matriz de trabajo para estas transformaciones, luego se cambia a GL_MODELVIEW donde más adelante en el programa se añadírían los puntos de los objetos como se mostró en el post anterior, utilizando la matriz de cada uno de éstos para colocarlos en la posición que les corresponde en el mundo 3D.

Conociendo estas transformaciones, y aprovechando que OpenGL nos facilita el cálculo de todas ellas; el programador puede concentrarse en cuestiones como el movimiento de la cámara, movimiento de los objetos, reglas del juego, etc. para crear su motor 3D.

Hay que tomar en cuenta también otro montón de cosas como ser la iluminación, sombras, efectos especiales, detección de colisiones, etc. algunas de las cuales requerirán de cálculos matemáticos complejos o del ingenio del programador para simularlos. Estas las expondré en los siguientes posts.

lunes, 1 de febrero de 2010

Enorme Log

La unidad C en un Windows SBS 2003, se me estaba quedando sin espacio; lo cual me generaba una diversa variedad de errores: no funcionaban las impresoras, se perdía la conexión con el Exchange Server, y en el peor de los casos todas las licencias CAL del Windows parecían desaparecer, lo que ocasionaba que ningún usuario pudiera conectarse.

Me tocaba estar borrando archivos temporales, sucesos de evento, vaciando la papelera, etc. para poder evitar estos problemas. No podía desinstalar ninguno de los programas que tenía y no deseaba formatear el servidor para hacer una partición más grande.

Encontré algo que me ayudará a resolver el problema por lo menos durante un buen tiempo, y es que el Symantec Server cuenta con un servicio llamado Reporting Agents que crea un log en el directorio "C:\Archivos de Programa\Archivos comunes\Symantec Shared\Reporting Agents\Win32" en un archivo llamado ReportsSVC.log. Este archivo va creciendo y creciendo hasta hacerse enorme!, el mío tenía mas de 700MB.

No encontré la forma de configurar la carpeta donde se crea este archivo para poder moverlo de mi disco C, pero si pude moverlo y hacer que comenzara con 1 KB de nuevo :). Solamente hay que detener el servicio Reporting Agents y mover o eliminar el archivo. No encontré mucho de importancia en él, pero por cualquier cosa lo salvé en otra partición :p

lunes, 18 de enero de 2010

MindManager 6 con MS Word 2007

MindManager es una fabulosa herramienta para la organización de ideas e incluso para realizar presentaciones. Tiene varias funcionalidades muy buenas, entre ellas la posibilidad de exportar los documentos a PowerPoint, Excel, Visio o Word, entre otros.

Tengo la versión Professional 6, y todo funcionaba muy bien hasta que decidí actualizarme a Office 2007. La versión 6 del MindManager trabaja con Office 2003, pero al intentar exportar los documentos si tenemos instalado el Office 2007 en vez del 2003, probablemente el programa se quede trabado o nos tire un error.

La nueva versión del MindManager se encuentra integrado con el Office 2007 y trae algunas características al parecer muy interesantes; pero yo necesitaba poder exportar documentos sin necesidad de desinstalar mi Office 2003 ni actualizar mi MindManager.

Bajé una actualización del sitio de Mindjet (el fabricante) que aseguraba resolver el problema y permitir exportar a Office 2007. Instalé la actualización y al entrar a mi MindManager las opciones de exportar a Word y otras habían desaparecido, solamente quedó la opción de exportar a Powerpoint y a rangos de Excel. Esto definitivamente era peor que el estado inicial...

Pero encontré la forma de solucionarlo, es bastante sencilla: solamente hay que ir al Control Panel y en la opción de Agregar y/o Quitar Programas le decimos que queremos cambiar la instalación de MindManager y luego seleccionamos la opción reparar. Al terminarse este proceso, las opciones de exportar a Word y otros programas reaparecen y funcionarán con el Office 2007 sin problemas!!...eso si, si queremos exportar a un archivo de office de 2003, tendremos problemas, así que en este caso hay que exportarlo a Office 2007, abrirlo en la aplicación respectiva y salvarlo como archivo de Office 2003, asunto arreglado!.