PDA

Ver la Versión Completa : Transportar BD en Sql Server


Melissa_12
13-12-2012, 21:35:49
Hola, mi problema es el siguiente, ayer quise llevarme mi base de datos de una maquina para otra mediante un backup y me dio error con los archivos MDF y LDF, ademas trate de hacer un script pero solo copio la estructura de las tablas, nada de datos, pensaba que tambien se copiaban los datos,la verdad es que no se que significa ni para que se utilizan pues siempre he trabajado en mi maquina como servidor, por favor si alguien me pudiera explicar o decirme algun sitio donde expliquen esto. Como es mejor para llevar una base de datos en Sql Server 2000 a otra maquina? Muchas Gracias.

luisgutierrezb
13-12-2012, 22:39:44
Generalmente el error que manda el backup es que no es la misma ruta, yo te recomiendo, hacer el backup, y en el otro equipo crear la base de datos con el nombre igual, y darle en restaurar base de datos, en opciones viene lo de la ruta donde quedaran el mdf y el ldf, fijate que sea la misma donde realmente estan porque la ruta se la trae del backup, si no es la misma, modificala para que quede igual y ponle en la opcion de sobreescribir la base de datos y listo! no deberias tener problemas

olbeup
14-12-2012, 09:01:21
Hola Melissa_12

Para hacer una copia de seguridad eficiente y sin problemas de que día y hora la has realizado:

DECLARE
@fileBackup varchar(100)
,@decodeDate varchar(8)
,@decodeTime varchar(4)
,@year varchar(4)
,@month varchar(2)
,@day varchar(2)
,@hour varchar(2)
,@min varchar(2)

SET @year = CAST(DATEPART(yyyy, GetDate()) AS varchar(4))
SET @month = CAST(DATEPART(mm, GetDate()) AS varchar(2))
SET @day = CAST(DATEPART(dd, GetDate()) AS varchar(2))

SET @hour = CAST(DATEPART(hh, GetDate()) AS varchar(2))
SET @min = CAST(DATEPART(mi, GetDate()) AS varchar(2))

IF (LEN(@month) = 1)
SET @month = '0' + @month

IF (LEN(@day) = 1)
SET @day = '0' + @day

IF (LEN(@hour) = 1)
SET @hour = '0' + @hour

IF (LEN(@min) = 1)
SET @min = '0' + @min

SET @decodeDate = @year+@month+@day
SET @decodeTime = @hour+@min

SET @fileBackup = 'C:\TuRuta\Databases\CopiaSeg\Fichero' +
@decodeDate + @decodeTime + '.bak'

BACKUP
DATABASE TuBaseDeDatos
TO DISK = @fileBackup



Para hacer una restauración de seguridad:

RESTORE
DATABASE TuBaseDeDatos
FROM DISK = 'C:\TuRuta\Databases\CopiaSeg\Ficheroyyyymmddhhnn.bak'


Un saludo

P.D.: Si te de error a la hora de restaurar es porque ya existe, borrala y no tendrás problemas.

Melissa_12
14-12-2012, 14:13:08
Muchas Gracias, luisgutierrezb y olbeup por responder, pondré en práctica sus consejos. Lo otro que quería preguntar es que si lo mejor para transportar una base de datos en SQL Server es mediante un backup?. Gracias.

olbeup
14-12-2012, 15:44:50
Muchas Gracias, luisgutierrezb y olbeup por responder, pondré en práctica sus consejos. Lo otro que quería preguntar es que si lo mejor para transportar una base de datos en SQL Server es mediante un backup?. Gracias.

No es lo mejor, es lo recomendable.

Un saludo.

Melissa_12
18-12-2012, 14:00:08
Hola!, muchas gracias por responder y disculpen mi insistencia, es que quiero aprender, hace unos meses vi a alguien que transportaba su bd en ficheros *.sql, o sea de los scripts que hace sql server y no se muy bien para que utilizarlos, o si los datos se guardan tambien ahi o solamente la estructura de las tablas. Muchas Gracias.

juanelo
18-12-2012, 16:35:23
Que tal Melissa_12,
A lo que te refieras muy posiblemente es a poder llevar contigo el contenido de la base de datos en formato de scripts (el metadata y los datos en si en forma de inserts). Existen algunas herramientas que tienen la posibilidad de generarte dichos scripts para ser transportados, pero generalemente son usados para migrar de una base de datos a otra (por ejemplo de SQL Server a Oracle).
Pero si tu intención es transportar los datos para ser usados por otro SQL Server, las opciones que te mencionan arriba son a mi parecer lo mejor que pudieras hacer.
Te mando un saludo.