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!