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.