martes, 19 de octubre de 2010

Exportar de Outlook 2003-2010 UNICODE a 97-2002 ANSI

Este es un problema muy habitual. Resulta que trabajamos en casa con una versión moderna y en el trabajo con una antigua. O que cambiamos de trabajo y vemos que no podemos utilizar los contactos que teníamos en el antiguo. O que simplemente queremos conocer como exportar los contactos en un formato que sea compatible con todas las versiones de Outlook y mandárnosla por correo. Bueno, en este caso vamos a ver cómo se pueden exportar los contactos de un Outlook 2003 en formato 97-2002.

Lo primero que hay que preparar es un fichero PST en formato 97-2002 desde el Outlook 2003

1.- Vamos a File => Outlook Data File.
2.- Seleccionamos formato Outlook 97-2002.
3.- Aceptamos advertencia.
4.- Seleccionamos destino del PST. Hay que ponerlo dentro una carpeta con permisos.
5.- Le ponemos un nombre fácil de entender y seleccionamos ‘No Encryption’


 


















Lo siguiente es copiar los contactos (o cualquier otra información) dentro del PST en formato 97-2002 que hemos creado.

1.- Botón derecho sobre los contactos a migrar y seleccionar ‘Copy “Contatcs”.
2.- Seleccionamos como destino el PST 2002 y [OK].
3.- Comprobamos que se ha copiado correctamente.
4.- Botón derecho sobre el PST Contactos2002 y seleccionar ‘Close “Contacts2002”’
5.- Cerrar Outlook para liberar el fichero creado.





















 
 

















 


















Enhorabuena, ya tienes un fichero PST que puedes abrir con versiones anteriores de Outlook. Conviene recordar que este formato de correo tiene un límite de 2 GB, que si se supera nos corrompe el fichero y hay que repararlo previa pérdida de información que podría ser importante.







miércoles, 6 de octubre de 2010

Expandir un disco VHD con el Sistema Operativo instalado

Hoy se me ha dado un caso. Tenía un Windows 2003 R2 instalado en Hyper-V con un solo disco VHD y se ha quedado sin espacio. En su día se definión con Windows Virtual Server 2005 con ese tamaño y al migrarlo a Hyper-V R2 no lo modifiqué.

NOTA: Siempre hay que tener copia de seguridad de TODO lo que toquemos. Hay que ser muy pesado con el tema y sobre todo muy metódico. Estoy cansado de que la gente se tire de los pelos por no hacer un simple COPY. Los que ponen la escusa de que las copias se cortan que prueben el Ultra-Copier, que es gratuito y segmenta las copias fichero a fichero. Esta aplicación se asocia al Ctrl +C y Ctrl +V. Pero este post no es para hablar de la aplicación. Si alguno tiene interés que ponga un comentario.


Bueno, anteriormente había explicado el proceso (el cual voy a poner abajo como alternativa), pero después de algunas pruebas he decidido utilizar otro método más sencillo y rápido:

1 - lo primero es corre un CHKDSK C: /F en el disco. Obligará a arrancar el ordenador. Una vez reparado y eliminados los errores podemos pasar al siguiente punto.

2 - En el Hyper-V Manager vamos a la ventana de la derecha 'Actions' y seleccionamos 'Edit disk' y expandimos el disco al máximo. ¡OJO!, esto no amplía el volumen de C:, solo permite que crezca.

3- Con el servidor apagado añadimos el liveCD de GPART para arrancar desde él. Desde esta maravilla de aplicación podemos, ahora sí, ampliar el volumen C: sin problemas.

4- Si al arrancar la máquina virtual da mensajes de error de permisos sobre el dispositivo IDE la única forma que he encontrado de solucionarlo es eliminar la máquina virtual y crear una nueva a la que le adjunto el disco. Por alguna razón pierde el ID del disco y con la creación de la VM de crea también el ID de disco.


Ahora viene el procedimiento anterior, por si alguien tiene problemas con el nuevo. Es más laborioso pero funcionó.

- Lo he intendado con Diskpart local sobre la máquina virtual y no me ha dejado.
- Lo he intentado arrancando esa máquina virtual con GPART Live CD y tampoco.

Al final he copiado el fichero .VHD a la máquina con Windows 7 Ultimate Edition (instalada dentro de un .VHD) y me ha dejado atacharlo(añadirlo) sin problemas, es decir, una máquina sobre VHD que añade un disco VHD, toma ya.

Una vez atachado al sistema le he ejecutado un chkdsk I: /f (en mi caso I:) para que me elimine los posibles errores acumulados. Luego he ido al gestor de discos para expandirlo:

- [Start] => Computer (botón derecho) => Manage => Storage => Disk Management
- Seleccionamos el disco y pulsamos botón derecho => Extend Volume.
- Seleccionamos la capacidad que queremos extender y aceptamos.

No es un procedimiento muy complejo, pero me ha costado un par de horas (más bien 4) caer en ello. Vale que no estoy muy lúcido últimamente, pero ya me ha sorprendido la simplicidad de la solución con la problemática que supone a cualquiera.

Gracias por seguir mi blog.





lunes, 4 de octubre de 2010

Añandir por comandos un usuario a un grupo local

Bueno, el título es muy explícito. Este pequeño post es para mostrar como se añade un usuario a un grupo local del equipo. Muchos se preguntarán la utilidad, pero podría ser desde crear un script para añadir usuarios de forma automática a una máquina, como hacerlo manualmente con el psexec, como arrancar un equipo al que no podemos acceder y poder añadir nuestro usuario para poder utilizarlo con derechos. Lógicamente todo esto se tiene que hacer con derechos sobre la máquina y yo no voy a explicar aquí las técnicas para coger el control de una máquina Windows, no es la idea de este post.

Bueno, vamos a lo práctico. Suponemos que tenemos un equipo donde queremos poner por un script un usuario en el grupo administradores locales, sin necesidad de loguearte con ningún administrador del dominio ni nada parecido. Lo único que contamos es con el usuario local de la máquina. El commando que vamos a utiliar es 'net localgroup'. Podéis encontrar más información en Microsoft :

La forma de hacerlo sería seguir la siguiente estructura:

- net localgroup group_name login_name /add

Un ejemplo claro es el de meter un usuario del dominio dentro del grupo administradores locales:

- net localgroup administrators DOMINO\Miguel /add

Con este comando conseguimos añadir al usuario 'Miguel' del grupo DOMINIO, en el grupo local de administradores. Ahora, al arrancar la máquina o al siguiente logon cogerá el cambio y tendrá todos los permisos sobre la máquina.

Fácil ¿no?.





viernes, 20 de agosto de 2010

Arranque dual XP-Windows 7, pero W7 instalado en un disco virtual .VHD

Pues esta semana me aburría un poco y me dije, ¿por qué no montarme un W7 en el ordenador?. Pero me daba pena quitarme el XP que tantas alegrías me ha dado, además de que no quería guarrear más el disco duro, con lo que pensé, ¿por qué no en un archivo .VHD?. De esta forma puedo tener mi XP montado nativamente y mi W7 en un fichero, con lo que mato dos pájaros de un tiro ;- )

Después de mirar por multitud de páginas de Internet no encontré nadie que lo hubiese hecho, o al menos publicado, con lo que me decidí a ser el primero. Encontré multitud de información de instalación de Windows 7 sobre VHD y también un gran número de sitios donde hablaban de la instalación dual. ¿Por qué no juntarlo todo?. Dicho y hecho.

La primera consideración que hay que tener en cuenta es que solo las versiones Enterprise y Ultimate soportan arrancar desde un disco virtual .VHD. Si lo intentáis con una otra versión os lo va a instalar, pero luego os saldrá un bonito cartel con un error de licencia.

Para empezar yo he dejado el XP en una partición del disco duro (C:) y como tenía otra (D:), la voy a utilizar como almacén del fichero .vhd. Esta partición tiene que estar formateada en NTFS.


Pasos:

1.- Meter el DVD de Windows 7 (obvio).
2.- Cuando salga la pantalla de selección de idioma (si sale), elegimos el que queramos y siguiente.

  3.- Cuando sale la pantalla para empezar la instalación pulsamos [Shift] + F10, para que nos abra una consola de comandos
 


4.- Escribimos DISKPART para acceder a la utilidad de manejo de discos.

5.- Creamos el fichero donde se instalará el sistema operativo:
CREATE VDISK FILE=D:\W7UltimX64.vhd MAXIMUM=20000 TYPE=Expandable
Con este comando hemos creado un disco virtual en la unidad D: con un tamaño máximo de 20GB y del tipo expandible. También se puede poner fijo, pero no quiero comerme todo ese espacio tan rápidamente.

6.- Una vez creado lo seleccionamos con SELECT VDISK FILE=D:\W7UltimX64.vhd

7.- Por último lo añadimos/montamos en el WindowsPE de instalación con ATTACH VDISK


8.- En el menú de instalación puede aparecer el tipo de instalación. Nosotros seleccionamos Ultimate ya que con versiones inferiores no funciona y luego instalamos de forma personalizada.




9.- Seleccionamos el disco que hemos montado e ignoramos el mensaje de que el sistema no se puede instalar en ese disco. Vamos, que me lo digan a mí si se puede, je, je, je.


Ya hemos acabado. Ahora solo hay que terminar el proceso de instalación de forma normal y listo. Por cierto, os recomiendo montar la utilidad GRATUITA de gestión de arranques llamada EASYBCD, que os ayudará a gestionar de forma muy eficiente el arranque.





lunes, 16 de agosto de 2010

Asociar usuarios huérfanos en SQL

Aunque éste no es mi tema, pero hoy han solicitado ayuda por el canal habitual (mail a un grupo) y no he podido resistirme a contestar. Es un problema bastante habitual. Migramos una base de datos de un SQL a otro servidor y perdemos los login. Si creamos un nuevo login éste no deja asociarlo directamente al de la base de datos importada (o restaurada) porque el SID es diferente. La solución es sencilla y MS lo tiene reportado, pero para todos aquellos que no les guste meterse con los extensos artículos de Microsoft, o simplemente vagos para buscarlo más allá de un 'googleado', os dejo estos pasos:

1.- Crear el usuario en el Login del SQL con el mismo nombre que en la base de datos, pero sin asociarlo a ninguna base de datos porque no deja.

2.- Correr el script de abajo para cada usuario en el Query Analyzer

sp_change_users_login 'update_one', 'pepe', 'pepe'

Con ésto ya tenemos el usuario pepe asociado tanto al SQL como a la base de datos. Ahora solo falta ir metiendo uno a uno, o si es muy extensa crearse un script para ello.

NOTA: Mi colega Manu, que sí que parece que se lo ha mirado por ahí, me ha mandado el script para hacerlos todos a la vez. Os lo publico para los que quieran echarle un vistazo. Gracias Manu.


-- *** Identificar Usuarios Huérfanos, dejándolos en tabla temporal ***

CREATE TABLE #TMP_DBUSERS
(
   dbname varchar(256)
   ,dbuser varchar(256)
)

DECLARE curDBs CURSOR
READ_ONLY
FOR SELECT name FROM master..sysdatabases

DECLARE @name varchar(256)
OPEN curDBs

FETCH NEXT FROM curDBs INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
   IF (@@fetch_status <> -2)
   BEGIN
      DECLARE @SQLquery AS VARCHAR(2048)
      SELECT @SQLquery = 'INSERT INTO #TMP_DBUSERS '      SELECT @SQLquery = @SQLquery + 'SELECT ''' + @name + ''', name '      SELECT @SQLquery = @SQLquery + 'FROM [' + @name + '].dbo.sysusers '      SELECT @SQLquery = @SQLquery + 'where sid NOT IN (SELECT sid FROM master.dbo.syslogins) '      SELECT @SQLquery = @SQLquery + 'AND islogin=1 '      SELECT @SQLquery = @SQLquery + 'AND name not in (''INFORMATION_SCHEMA'', '
      SELECT @SQLquery = @SQLquery + '''sys'', ''guest'', ''dbo'', ''system_function_schema'')'

      EXEC(@SQLquery)
   END
   FETCH NEXT FROM curDBs INTO @name
END

CLOSE curDBs
DEALLOCATE curDBs
GO


-- *** Comprobar Usuarios Huérfanos
--
*** para los que existe un Login con el mismo nombre.
SELECT * FROM #TMP_DBUSERS
where dbuser in (select name from master..syslogins)

-- *** Comprobar Usuarios Huérfanos
-- *** para los que NO existe un Login con el mismo nombre.
-- *** PD: ostias, pedrín !!!SELECT * FROM #TMP_DBUSERS
where dbuser not in (select name from master..syslogins)

-- *** Generar sentencias sp_change_users_login
-- *** para corregir los Usuarios Huérfanos con Inicio de Sesión conocido
-- *** PD: La salida de este Script, debe ejecutarse como otra Query
-- *** Revisar antes.
SELECT 'USE [' + dbname + ']; ' + CHAR(13)
      + 'EXEC sp_change_users_login ''Update_One'', ''' + dbuser + ''', ''' + dbuser + ''';'
FROM #TMP_DBUSERS
WHERE dbuser IN (select name from master..syslogins)







viernes, 13 de agosto de 2010

Problemas con Hyper-V R2 y servidores HP de la serie G5/G6

Pues esta vez el post va de los problemas que me he encontrado al instalar Hyper-V R2 en un cluster con dos nodos Windows 2008 R2 Datacenter. No voy a explicar cómo montar un cluster ni como montar Hyper-V, para eso ya hay varios posts en español muy buenos. Yo os recomiendo ir al blog de David Cervigon, que es realmente excepcional.

Bueno, empezamos a enumerar las cosas que hay que tener en cuenta a la hora de montar un sistema de estas características. Lo primero, obviamente, asegurarse que el hardware es compatible. Yo miré en HP y lo marcaba como compatible. Bien, vamos a ello. Monto las dos máquinas, configuro el cluster y a la hora de montar Hyper-V empieza lo bueno:

1.- Leo por casualidad un artículo que hablaba de la incompatibilidad entre el software de HP Network Configuration Utility e Hyper-V. Bien, sido sus instrucciones, lo desinstalo, monto Hyper-V, me bajo la versión 10 del NCU de la página de HP y listo. Ya tengo Hyper-V y además el gestor de HP para hacer un 'TEAM' entre NICs.

2.- Cuando tengo todo listo e intento arrancar mi primera máquina virtual me sale el mensajito: "The virtual machine could not be started because the hypervisor is not running.". Pero si todo lo ha montado bien, ¿a qué viene esto ahora?. Lo primero que hago es mirar si tengo bien el arranque C:\>bcdedit /v
Compruebo el parámetro "hypervisorlaunchtype auto". En caso de estar disable se puede poner en auto con el comando "bcdedit /set hypervisorlaunchtype auto".

Eso no es, así que me pongo a buscar y encuentro este artículo de HP, donde explican que parámetros hay que poner en las BIOS para que esto funcione. En mi caso tenía habilitado el Intel(R) Virtualization Technology, pero me faltaba habilitar el No-Execute Memory Protection. Os recomiendo su lectura antes de nada. Cambio el parámetro en la BIOS, todo parece correcto y CRASH!!!, pantallazo azul.

3.- Cuando se habilita Intel(R) Virtualization Technology o No-Execute Memory Protection, se produce un fallo del sistema a lo bestia. Mi desesperación empieza a llegar a límites insospechados. Vuelvo a mirar por ahí y encuentro el error reportado. Se trata de un 'bug' en el kernel del sistema operativo. Por suerte para mi, ya hay parche publicado y solo hay que solicitarlo a Microsoft para que te lo manden. Para los curiosos es el KB974598. Lo solicito e instalo. ¡¡Premio!!.

Para que luego digan que todo es meter el CD y pulsar [Next], [Next], [Next], [Next], [Next], [OK]

Ahora ya, con mi sistema montado y funcionando, puedo empezar a jugar con las máquinas virtuales, los volúmenes CSV y el LiveMigration...... bueno no, mejor me voy a actualizar primero el firmware de todos los componentes del los equipos para ver si lo vuelvo a petar, je, je, je.





jueves, 20 de mayo de 2010

Creación de un RAID1 partiendo de un solo disco instalado (Dell PERC 4e/Di)

Bueno, hoy voy a publicar un pequeño tutorial muy visual de cómo configurar un espejo en un equipo que solo tiene un disco. Lógicamente necesitaremos otro disco de igual o mayor tamaño para poder crear el RAID1 ;-)

En esta ocasión voy a utilizar un Dell PowerEdge 2850 y las propias opciones de la BIOS de la PERC 4e/Di, tan desconocidas para la mayoría pero realmente útiles. Tal vez en otra ocasión haga este mismo tuto pero con HP y su utilidad ACU arrancada desde el Smart Start.

- Lo primero es hacer un backup lo más completo posible del disco. Podemos utilizar la técnica del clonado con IMAGEX que ya posteé anteriormente para crear una imagen del disco actual. También existe software comercial que soluciona el tema del backup de disco, pero yo prefiero utilizar las herramientas propias de los fabricantes. Entre otras cosas, son gratuitas y nos sirven perfectamente.

- Luego pinchamos el disco nuevo en FRÍO. Esta controladora y su backplane soportan discos en caliente, pero eso útil en caso de disco averiado, en esta ocasión nos interesa parar el equipo y arrancar con el nuevo disco pinchado

- Ahora arrancamos el servidor y nos metemos en la BIOS de la PERC pulsando + M
 - Chequeamos la configuración para comprobar que nos ha cogido el disco nuevo
 
- Chequeamos la configuración del RAID 0 actual para verificar que todo es correcto
 
Una vez verificado que tanto el disco nuevo, como el RAID antiguo se encuentran correctamente, vamos a pasar a crear un RAID1 con el disco nuevo desde el RAID0 que ya teníamos. Para ello nos vamos a una opción que tiene para tal fin la PERC
- Seleccionamos la unidad lógica. Como en este caso solo tenemos 1, no hay mayor problema.
- Seleccionamos el tipo de RAID. Al tener dos discos podríamos ampliar la capacidad del existente con la del actual seleccionando RAID0, o como en nuestro caso crear un espejo seleccionando RAID1
- Reconstruimos

Y esperamos……..
¡¡Listo!!, ahora debería arrancar sin problemas nuestro servidor, pero con mayor tolerancia a fallos gracias a su RAID1
No suelo ser tan gráfico en mis posts, pero me lo ha sugerido un compañero y creo que no va a ser el único de estas características que publique,

Un saludo,