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.