Mostrando entradas con la etiqueta Windows 2008. Mostrar todas las entradas
Mostrando entradas con la etiqueta Windows 2008. Mostrar todas las entradas

domingo, 18 de diciembre de 2011

Mover los archivos de una base de datos MSSQL Server

Hoy me he tenido que ver en la tesitura de mover los archivos de una BBDD SQL Server 2008 de un directorio a otro: el motivo, una BBDD que ha crecido de manera desmesurada en pocas horas, así que me he tenido que buscar las castañas para devolver el servicio a la plataforma. Y ya hablaremos con el cliente para ver qué quiere hacer.

El caso es que mover la BBDD ha sido sencillo, una vez he tenido un poco de idea de cómo hacerlo. En mi caso, lo he hecho para un MSSQL 2008, pero imagino que el procedimiento será el mismo en otras versiones.

Antes de empezar
1) tener claro dónde están los datos actuales de la BBDD y dónde lo vamos a mover, y sobre todo, si hay espacio suficiente. Sé que puede parecer una tontería, pero no lo es.
2) configuraremos el directorio destino. Con esto me refiero a que asignaremos los mismos permisos al directorio de destino que tiene el directorio origen. En mi caso, que trabajo con un usuario administrador, sólo me hizo falta añadir al usuario SQLUser con control total en el directorio, y después, al mover los archivos, y en los archivos.

Una vez tenemos el escenario preparado, los pasos serán los siguientes:
 - Arranca el SQL Server Management Studio
 - Expande la instancia de tu servidor SQL y las Bases de datos (Databases)
 - Botón derecho sobre la BBDD que quieres mover y elige 'Tasks' y después 'Detach'. Con esto, la BBDD queda desvinculada del servidor SQL, aunque sigue en nuestro disco duro. Haz con cuidado este paso y asegúrate que no hay activada ninguna opción tipo 'Drop'. Haz click en 'OK' cuando hayas comprobado toda la información de la ventana 'Detach'.
 - Desde el directorio origen de datos de SQL, mueve los datos (xxxx.mdf y xxxx.ldf) a su nuevo directorio. Recuerda comprobar los permisos unas vez movidos los archivos, y que sean los mismos que originalmente.
 - Botón derecho sobre 'Databases' y elige la opción 'Attach'; con esto, volveremos a vincular la BBDD al servidor SQL. Se abrirá una ventana que nos pedirá que ubiquemos los archivos de la BBDD que vamos a vincular; navegamos y seleccionamos el archivo .mdf que acabamos de mover, y 'OK'.
 - En el siguiente panel comprueba que la nueva localización está configurada tanto para el archivo .mdf como para el .ldf. Una vez comprobado, 'OK'.
 - Una vez se haya vinculado de nuevo la BBDD, comprueba que se haya hecho bien, refrescando la vista y comprobando que la BBDD se lista de nuevo correctamente.


Como véis, el proceso no es muy complicado, sólo que las primeras veces hay que ir con ojo. Aún así, me he encontrado con dos problemas, y paso a relatar cómo los he solucionado.
  • Por un lado, al vincular la BBDD de nuevo, el SQL lo hacía en modo Read-Only. Esto ha sido debido a que los permisos del nuevo directorio y de los archivos copiados no eran los mismos que originalmente; por eso hago tanto hincapié durante la explicación.
  • Por otro lado, una vez ha finalizado correctamente todo el proceso, otra BBDD se ha quedado en estado 'in recovery', y no se podía realizar ninguna acción sobre ella. En esta BBDD no se ha hecho ningún cambio, pero es posible que a nivel interno tuviera alguna relación con la BBDD que se ha movido; el caso es que pasados unos minutos en este estado, se ha solucionado solo, la BBDD ha salido de este estado una vez ha finalizado la recuperación.

jueves, 19 de agosto de 2010

Moviendo archivos de MS SQL Server

Hoy me he encontrado con que, debido al crecimiento de una base de datos, tenía que mover los archivos (el .mdf -datos- y el .ldf -log-) a otro disco. Hasta ahora (con SQLs más antiguos), paraba la base de datos, editaba las propiedades, movía los archivos y levantaba el SQL. Y todo bien, oiga. Era consciente de que había una manera "más elegante" de hacerlo, pero como eso me iba bien, para qué iba a molestarme...

El caso es que hoy he tenido que mover los archivos correspondientes a un MS SQL Server 2005 Express, y no he podido hacerlo con mi fórmula de siempre. Así que me he buscado un poco la vida... y ningún problema.

Esto es lo que he hecho (desde la misma consola del SQL)
[ bbdd es la base de datos que quería mover, C:\xxx la localización inicial y D:\xxx la final ]

Primero desconecto la base de datos...

use master
go
sp_detach_db 'bbdd'
go

Ejecuto. Todo bien, me devuelve un mensaje según el cual se ha hecho bien. Después lo que hago es mover los archivos .mdf y .ldf a su nueva ubicación. Una vez estén copiados, simplemente vuelvo a conectar la base de datos pero diciéndole qué archivos utilizar. Lo hago así:

use master
go
sp_attach_db 'mydb','C:\xxx\bbdd.mdf','D:\xxx\bbdd.ldf'
go

Ejecuto. La base de datos vuelve a estar online y disponible, y con muuuuucho espacio para crecer. Como último, si quiero comprobar que estos son los valores correctos y no los anteriores, hago una consulta de estado para la base de datos; lo hago ejecutando:

use bbdd
go
sp_helpfile
go

Como respuesta, la última consulta me devuelve cuáles son los archivos de datos y de log de la tabla consultada, y, en efecto, están apuntando a la nueva localización. La verdad es que es fácil y rápido, efectivo, y bastante elegante. No se puede pedir más.

Ah, bueno, y las versiones. Por lo que he visto, sirve para cualquier MS SQL Server, pero podréis encontrar más información en la página oficial de MS:
http://support.microsoft.com/kb/224071


Ale, que vaya bien!

miércoles, 2 de septiembre de 2009

Redimensionando unidades de Windows Vista o Windows 2008 Server

Cuando con vmware redimensionamos un disco de sistema sobre el que está instalado un sistema operativo tipo Windows Vista o Windows 2008 Server, al arrancar el sistema de nuevo nos devolverá un error como el que sigue:

\Windows\System32\winload.exe

The selected entry could not be loaded because the application is missing or corrupt

Para resolver este problema, lo hago poniendo el CD/DVD de Windows de la versión instalada, y siguiendo las instrucciones; en la primera pantalla selecciono el idioma del teclado, y en la siguiente, en lugar de instalar, selecciono la opción de REPARAR. Me dará tres opciones, y selecciono la opción de la Línea de comandos (COMMAND LINE). Se abrirá una venta CMD desde el CD/DVD, es decir en la unidad X. Lo primero que haremos será cambiar a la unidad donde está el sistema en este servidor (normalmente la C:) y desde allí restaurar los parámetros que hemos perdido con la herramienta bcdedit.exe.

X:\ C:
C:\ bcdedit.exe

Esto debe mostrar una lista de este tipo:

Windows Boot Manager
——————–
identifier {bootmgr}
device unknown
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30

Windows Boot Loader
——————-
identifier {current}
device unknown
path \Windows\system32\winload.exe
description Microsoft Windows Server 2008
locale en-US
inherit {bootloadersettings}
osdevice unknown
systemroot \Windows
resumeobject {12f74cff-e685-11dd-8438-93c12396c12f}nx

OptOut

Los tres parámetros que están en rojo son los que tenemos que cambiar. Para hacerlo, simplemente ejecutaremos los siguientes comandos (cambiar la C: por la unidad de sistema si es otra)

c:\windows\system32\bcdedit /set {default} device partition=c:
c:\windows\system32\bcdedit /set {default} osdevice partition=c:
c:\windows\system32\bcdedit /set {bootmgr} device partition=c:

Después de esto, reiniciamos y el servidor se levantará correctamente. Como mucho, hará un chequeo de la unidad que hemos redimensionado (dejad que lo haga).

lunes, 22 de junio de 2009

Activación fallida en W2008 Server

Cuando instalamos un W2008 server (pasa también con Windows Vista, por lo que he podido ver), tenemos que registrarlo, y es posible que nos devuelva el siguiente error

Activating Windows Server (R), ServerEnterprise edition
(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)...
Run 'slui.exe 0x2a 0x8007232B' to display the error text
Error: 0x8007232B
o
License Activation Scheduler (SLUINotify.dll) was not able to automatically activate.
Error code:0x8007232B

Si buscamos info de cualquiera de estos errores, al final nos llevará a un error tipo

DNS name does not exist

A ver, el error en sí poco tiene que ver con un problema de DNS. En realidad es más un tema de Windows, que intenta evitar un problema de inestabilidad con sus ventanazos típicos de esta manera. Lo único importante de esto es que tenemos que activar el producto antes de que se acabe el periodo de gracia (los dos meses que te dan para que lo hagas).

Así que lo único que hay que hacer es volver a registrar el producto. Con el mismo código que hemos utilizado en la instalación (u otro, pero no es necesario), volvemos a registrar el sistema y después comprobamos que ha quedado registrado. Así de sencillo.

Cómo lo hacemos. Fácil. En el propio servidor, desde la línea de comandos (Inicio, Ejecutar, "cmd"), nos movemos al directorio

C:/Windows/System32

y desde allí ejecutamos
slmgr.vbs -xpr

y esperamos a que nos salte la ventana que nos diga cuánto tiempo nos queda de licencia válido. Cuando nos salga y veamos que no está todavía activado, haremos:

slmgr.vbs -ipk Windows_2008_Server_serial_number

e igual que antes, esperaremos a que nos diga que ha sido correctamente registrado el nuevo código. Y para activarlo, haremos
slmgr.vbs -ato

También nos saldrá una ventana indicando que ha sido correctamente activado
Activating Windows Server (R), ServerEnterprise edition
(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)...
product activated successfully.

Y por último, comprobamos que la máquina ya está registrada, mirando el tiempo que le queda de vida a la licencia.
slmgr.vbs -xpr

que nos devolverá un mensaje tipo
The machine is permanently actived.

Y ya tenemos nuestro Windows 2008 Server (Enterprise, Standard, ...) registrado y activo.