Create Database – Adjuntar Base de datos

Adjuntar una base de datos

Adjuntar una base de datos a una instancia de SQL Server va a ser posible si se tienen todos los archivos de una base de datos separada del servidor. Al usar la instrucción Create Database se utiliza la cláusula For Attach.

Requisitos

  • La base a adjuntar debe haber sido separada previamente.
  • Todos los archivos de la base de datos deben estar disponibles, primario, secundarios y de transacciones. Hay que incluir la unidad y carpeta donde se encuentra cada archivo. (Ver tipos de archivos)
  • Al adjuntar una base de datos, los archivos no pueden estar ubicados en el directorio raíz de la unidad.

Ejercicios

1.- Crear una base de datos, luego separarla y adjuntarla.

Crear la base de datos.

xp_create_subdir ‘C:\BasesContable’
go
xp_create_subdir ‘D:\RRHH\Bases’
go
xp_create_subdir ‘C:\BasesFinanzas’
go
Create database EmpresaBD
on Primary
(Name= ‘EmpresaBD01′, Filename=’D:\RRHH\Bases\EmpresaBD01.mdf’,
Size= 10MB, Maxsize= 30GB, Filegrowth=10MB),
Filegroup CONTABILIDAD
(Name= ‘EmpresaBD02′, Filename=’C:\BasesContable\EmpresaBD02.ndf’),
Filegroup VENTAS
(Name= ‘Ventas1′, Filename=’C:\BasesFinanzas\Ventas1.ndf’,
Size= 30MB, Maxsize= 20GB, Filegrowth=30%)
log on
(Name= ‘EmpresaT1′, Filename=’C:\BasesContable\EmpresaT1.ldf’)
go

Separar la base de datos

exec sp_detach_db EmpresaBD
go

Adjuntar la base de datos separada

USE master
GO
CREATE DATABASE EmpresaBD ON
( FILENAME = ‘D:\RRHH\Bases\EmpresaBD01.mdf’ ),
( FILENAME = ‘C:\BasesContable\EmpresaT1.ldf’ ),
( FILENAME = ‘C:\BasesContable\EmpresaBD02.ndf’ ),
( FILENAME = ‘C:\BasesFinanzas\Ventas1.ndf’ )
FOR ATTACH
GO

Note que para adjuntar una base de datos se debe incluir la cláusula For Attach.

2.-  Suponiendo que se ha instalado AdventureWorks en el equipo y los archivos de la base de datos han sido copiados a la carpeta Datos ubicada en C: (C:\Datos). Para crear la base de datos Aventura se utiliza la siguiente instrucción.

Create Database Aventura
ON (Filename = ‘C:\Datos\AdventureWorks_Data.mdf’),
(Filename = ‘C:\Datos\AdventureWorks_Log.ldf’)
for attach
go

Note que al adjuntar, el nombre de la base de datos puede ser diferente al nombre de la base de datos  separada. Para el ejemplo anterior se ha adjuntado la base de datos con el nombre Aventura.