Este artículo paso a paso describe cómo mover bases de datos de usuario de SQL Server entre equipos que ejecutan SQL Server.
En los pasos descritos en este artículo se supone que no mueve las bases de datos de sistema de master, model, tempdb o msdb.
Puede mover bases de datos de usuario a Microsoft SQL Server 2000, entre servidores que ejecutan SQL Server 7.0 o entre de SQL Server 2000 desde Microsoft SQL Server 7.0 utilizando cualquiera de esto:
- Mediante un respaldo de la base de datos
- Sp_detach_db y Sp_attach_db
- Importar y exportar datos (Importar y exportar datos copia objetos y datos entre bases de datos de SQL Server)
Respaldo de Base de Datos
Genere un respaldo de base de datos con la sentencia BACKUP Database
BACKUP DATABASE base_de_datos to DISK = 'C:\base_de_datos.BAK'
Restaurelo en el servidor destino. Si la base de datos destino tiene una estructura diferente a la del origen, será necesario utilizar la opción WITH MOVE para indicar la ruta de los archivos de base de datos.
RESTORE DATABASE base_de_datos
FROM DISK = 'c:\base_de_datos.BAK'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
Sp_detach_db y Sp_attach_db
Los store procedures sp_detach_db y sp_attach_db sirven, para desligar los archivos de datos de una base de datos. De esa manera es posible moverlo de un lado a otro.
Los archvos de una base de datos se distinguen de la siguiente manera:
ArchivoDescripción
.mdf | Archivo primario |
.ndf | Archivos secundarios |
.ldf | Archivo de log de transacciones |
1. Desligue los archivos de la base de datos
use master
go
sp_detach_db 'mydb'
go
2. Copie los archivos de datos del servidor origen al servidor destino o nueva ruta.
3. Lige nuevamente los archivos a la base de datos
use master
go
sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
go
4. Verifique que se encuentran correctamente ligados mediante el comando
use mydb
go
sp_helpfile
go
La sintaxis completa de los comando dados es la siguiente.
Sintaxis
sp_detach_db [ @dbname = ] 'dbname'
[ , [ @skipchecks = ] 'skipchecks' ]
Argumentos
[@dbname =] 'dbname'
Es el nombre de la base de datos que se va a separar. dbname es de tipo sysname y su valor predeterminado es NULL.
[@skipchecks =] 'skipchecks'
skipchecks es de tipo nvarchar(10) y su valor predeterminado es NULL. Con el valor TRUE (verdadero), se omite UPDATE STATISTICS. Con el valor FALSE (falso), se ejecuta UPDATE STATISTICS. Esta opción es útil para las bases de datos que deben moverse a medios de sólo lectura.
Sintaxis
sp_attach_db [ @dbname= ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]
Argumentos
[@dbname =] 'dbname'
Es el nombre de la base de datos que se va adjuntar al servidor. El nombre debe ser único. El argumento dbname es de tipo sysname y tiene un valor predeterminado de NULL.
[@filename1 =] 'filename_n'
Se trata del nombre físico, incluida la ruta de acceso, de un archivo de base de datos. El argumento filename_n es de tipo nvarchar(260) y tiene un valor predeterminado de NULL. Se pueden especificar hasta 16 nombres de archivos. Los nombres de parámetro comienzan en @filename1 y se incrementan hasta @filename16. La lista de nombres de archivos debe contener al menos el archivo principal, que contiene las tablas del sistema que apuntan a otros archivos de la base de datos. La lista también debe contener los archivos que se hayan movido después de separar la base de datos.
NOTA
Cuando se mueven archivos de un servidor a otro es importante que el character set, sort order y Unicode collation sean los mismos.
Importar y exportar datos
Se puede copiar una base de datos por completo o solo algunas tablas mediante la utilería Data Transformation Services Import and Export Data Wizard.
En estos casos no es necesario que el character set, sort order y Unicode collation sean los mismos.
Para comenzar a exportar los datos solo es necesario abrir el Data Transformation Services Import and Export Data Wizard y seguir las indicaciones.