Está en la página 1de 88

Tema 1: Configuracinde archivosde

registrode datos.
Una base de datos SQL. Server 2012 cuenta con dos tipos de archivos
operativos:los archivos de datos y los archivos de registro. Los archivos de datos
contienendatos y objetos tales como tablas e ndices; los archivos de registro
contienen elregistro de transacciones necesario para recuperar las transacciones de
la base dedatos. Es posible agrupar los archivos de datos en grupos de archivos con
el fin deque puedan ser ms fcilmente administrados y puedan ofrecer un mayor
rendimiento. A continuacin explicaremos los diferentes tipos de archivo existentes,
veremos las diferentes opciones de configuracin disponibles, y lasmejores
prcticas para disear sus archivos de manera que tanto su recuperacincomo su
rendimiento sean ptimos.

Archivos de datos.
En una base de datos SQL Server 2012, pueden crearse dos tipos de archivos
dedatos: primarios y secundarios.

El archivo primario de datos es obligatorio y contiene informacin de
arranque para el catlogo de la base de datos, sealando a otras bases de
datos.Este archivo primario puede contener tambin objetos y datos de los
usuarios. La extensin recomendada para el archivo de datos primarios es
.mdf.
El archivo secundario de datos, que es opcional y viene definido por
elusuario, contiene tanto objetos como datos del usuario. Es posible
colocarcada uno de los archivos secundarios en un disco diferente para
mejorar elrendimiento. Una base de datos puede contener un mximo de
32,766archivos secundarios. La extensin recomendada para este tipo de
archivos.ndf.

Por ejemplo, usted puede tener una base de datos sencilla o una base de datosque
utiliza en raras ocasiones con un nico archivo primario de datos que almacena
tanto la informacin del catlogo como las tablas, vistas, procedimientos ydatos.
Para una base de datos mayor o que se utilice ms frecuentemente,
podraconfigurar un archivo primario de datos, as como varios archivos
secundariosalojados en diferentes discos para obtener un mejor rendimiento y una
majordisponibilidad y estabilidad.

Archivos de bases de datos.
Es recomendable almacenar todo los datos y objetos en archivos secundarios y
dejar el catlogo en la base de datos en el archivo primario. Estaconfiguracin
ayuda a reducir la contencin del acceso al disco.

Archivos de registro.
Todas las bases de datos SQL Server 2012 tienen un registro de transaccionesque
registra todas las modificaciones que realiza cada transaccin en la base dedatos.
SQL Server almacena esta informacin en los archivos de registro. Deber tener al
menos un archivo de registro para cada base de datos. Puede creararchivos de
registro mltiples por cada base de datos para facilitar as unarecuperacin ms
rpida. La extensin recomendada para los archivos de registro es .ldf.

Grupos de archivos.
Un grupo de archivos es una estructura lgica que permite a los administradoresde
la base de datos agrupar archivos de datos y tratarlos como si fueran unaunidad
lgica. Con el fin de mejorar el rendimiento, puede destinar objetos de labase de
datos, como por ejemplo las tablas, a grupos de archivo especficos. Aldividir los
objetos de la base de datos en varios grupos de archivo, pueden aprovecharse los
diferentes subsistemas de disco y permitir que SQL Server realice operaciones de
disco paralelas. Adems, con la configuracin de grupos de archivo mltiples, los
archivos pueden ser copiados y restaurados individualmente.
SQL Server soporta dos tipos de archivos de grupo: primarios y definidos por
elusuario.
Un grupo primario de archivos contiene el archivo de datos primario y
todoslos archivos de datos secundarios que no hayan sido almacenados en
otrogrupo. Todos los sistemas de tablas son asignados al grupo primario
dearchivos.

El grupo de archivos definido por el usuario se crea con la finalidad
deagrupar archivos secundarios y asignar objetos de la base de datos a
gruposde archivos. Una base de datos puede contener hasta 32,766 grupos
de archivo definidos por el usuario.

A la hora de administrar grupos de archivos, deber prestar especial atencin alas
siguientes propiedades de los mismos, propiedades que podr establecer ymodificar
desde el SSMS o utilizando el comando ALTER DATABASE.

Cada base de datos contiene un grupo primario de archivos. Cuando se
creaun objeto de la base de datos sin especificar un grupo de archivo, SQL
Serverasigna el objeto al grupo de archivos predeterminado.
Se puede configurar un grupo de archivos como de slo lectura. Los
gruposde archivos de slo lectura pueden utilizarse para objetos de la base
de datosque no deban ser modificados, como por ejemplo las tablas de
historia.

Todos los grupos de archivo pueden ser configurados como de slo lecturasalvo el
grupo primario de archivos.
Si su base de datos tiene una tabla a la que se accede con mucha frecuencia
(porejemplo, Detalles de compra), es posible crear mltiples archivos secundarios
de datos para la misma, almacenar los archivos en diferentes unidades dedisco, y
agrupar todos estos archivos en un mismo grupo de archivos. Posteriormente,
podr almacenar la tabla Detalles de compra en este grupo, demanera que todas
las consultas que se realicen sobre esta tabla se extendern portodos los discos
disponibles.

Diseo de grupos de archivo.
Cree al menos un grupo de archivos definido por el usuario para albergararchivos
secundarios de datos y objetos de la base de datos. Configure estegrupo de
archivos como grupo predeterminado, de modo que SQL Serveralmcene todos los
objetos creado en dicho grupo.

Cmo configurar archivos de datosy archivos de registro.
Los archivos de datos y de registro se pueden configurar utilizando el comando de
Transact-SQL CREATE DATABASE. Es posible modificar la configuracin delos
mismos mediante el comando ALTER DATABASE. De forma alternativa,estos
archivos pueden tambin configurarse a partes de la pgina de Propiedades de la
Base de Datos en SSMS. La tabla 1 contiene las opciones de configuracin para
cada tipo de archivo.
Tabla 1. Opciones de configuracin de archivos.
Opcin Descripcin
Name El nombre lgico para el archivo.
Filename Ruta completa del sistema operativo y nombre de archivo.
Size Tamao del archivo. Si no se especfica un tamao para elarchivo
primario, el motor de la base de datos utilizar eltamao del archivo
primario en la base de datos modelo. Sise especifica un archivo
secundario o archivo de registro sinla opcin de tamao, el motor de la
base de datos creararchivos de 1 MB.
Maxsize Es el tamao mximo del archivo. Si no se especifica untamao
mximo, o si se especifica el valor UNLIMITED, lafila crecer hasta que
la unidad est llena. En SQL Server2012, un archivo de registro tiene
un tamao mximo de 2terabytes, y los archivos de datos, un mximo
de 16 terabytes.

Filegrowth Especifica el crecimiento automtico permitido para el archivo. Puede
especificarse el valor en kilobytes, megabytes,gigabytes o terabytes, o
como porcentaje del tamao de archivo actual. Si se especifica un
valor 0, no crecer.

Como normal general, deber crear archivos de base de datos lo ms
grandesposible, basndose en la cantidad mxima de datos que estima que
contendr la base de datos para poder acomodar el crecimiento futuro de la misma.
Al creargrandes archivos, puede evitarse la fragmentacin de archivos y obtener un
mejor rendimiento de la base de datos. En muchos casos, es posible permitir
elcrecimiento automtico de la base de datos; asegrese, no obstante, de limitar
alautocrecimiento especificando un tamao de crecimiento mximo que deje
librecierta cantidad de espacio en el disco duro. Al agrupar diferentes grupos
dearchivo en discos diferentes, podr tambin eliminar la fragmentacin fsica de
sus archivos a medida que stos vayan creciendo.
Nota: Para el siguiente ejercicio, cree una carpeta llamada C:\AdSQL y dentro de ella dos
carpetas, Project_Data y Project_Data2. Si cuenta con una unidad de disco externa, cree
Project_Data2 en esa unidad. En el ejemplo asumiremos que existe una unidad externa
E:. De no contar con ella, cambie la ruta del ejemplo a C:\AdSQL\Project_Data2.
CREATE DATABASE Projects
ON
PRIMARY
(NAME =ProjectPrimary,
FILENAME=' C:\AdSQL\Projects_Data\Projectprimary.mdf' ,
SIZE = 100MB,
MAXSIZE = 200),
FILEGROUPProjectsFG
(NAME = ProjectData1,
FILENAME = 'E:\AdSQL\Projects_Data2\ProjectData1.mdf' ,
SIZE = 200 MB,
MAXSIZE = 1200,
FILEGROWTH =100),
FILEGROUP ProjectHistoryFG
( NAME = ProjectHistory1,
FILENAME=' E:\AdSQL\Projects_Data2\ProjectHistory1.mdf' ,
SIZE = 100 MB,
MAXSIZE = 500,
FILEGROWTH = 50)
LOG ON
( NAME = Archlog1,
FILENAME =' C:\Projects_Data\Projectflata1.mdf ' ,
SIZE= 300 MB,
MAXSIZE = 800,
FILEGROWTH = 100)
Es posible aadir, eliminar o modificar las propiedades del archivo mediante
elcomando ALTER DATABASE. El siguiente ejemplo aade un nuevo archivo a
labase de datos Projects. Lleve a cabo el siguiente ejercicio:

ALTER DATABASE Projects
ADD FILE
(NAME=ProjectsData4,
FILENAME= ' E:\Projects_Data\ProjectData4 .ndf',
SIZE=100MB,
MAXSIZE=500MB,
FILEGROWTH=75MB) TO FILEGROUP ProjectsFG

Estas opciones de archivo pueden tambin configurarse desde SSMS.

Cmo configurar archivos de basesde datos con sistemas
RAID.

Los sistemas RAID (en ingls, RedudantArray of IndependentDiks o
conjuntoredundante de discos independientes) son sistemas de disco que
proporcionanuna mejor tolerancia a los fallos, una mayor capacidad de
almacenamiento y unrendimiento mejor para el subsistema de disco, dependiendo
de la configuracin elegida. Si bien los sistemas de hardware RAID no son parte de
la configuracin de SQL Server, dichos sistemas afectan directamente el
rendimiento deSQL Server. Existen varios niveles RAID, cada uno de los cuales
emplea unalgoritmo de tolerancia de fallos distinto. Los niveles RAID utilizados con
msfrecuencia son 0, 1, 5 y 10.

RAID 0: Este nivel recibe tambin el nombre de dishstriping o volumen
dividido, ya que crea un sistema de archivo de disco que denominaremos
conjunto dividido. RAID 0 ofrece un rendimiento ideal en operaciones
delectura y escritura, ya que distribuye estas operaciones entre todos los
discosdel conjunto. Sin embargo, RAID 0 no proporciona tolerancia hacia los
fallos; si un disco falla, perder el acceso a todos los datos del conjunto.

RAID 1: Tambin conocido como disk mirroring o configuracin de discosen
espejo, proporciona una copia redundante del disco seleccionado. Elnivel
RAID 1 mejora el rendimiento, pero puede empeorar el rendimiento delas
operaciones de escritura.

RAID 5: Es el nivel de RAID ms utilizado. Este nivel distribuye los
datosentre los discos del conjunto RAID igual que el nivel RAID 0, pero a su
vezaade tambin informacin de paridad para proporcionar tolerancia a
losfallos. La informacin de paridad se distribuye as entre todos los discos
delconjunto. RAID 5 ofrece un mejor rendimiento que RAID 1. Sin embargo,
siun disco falla, el rendimiento en operaciones de lectura disminuye.

RAID 10: Tambin RAID 1+0, incluye tanto la divisin sin paridad como
laconfiguracin de discos en espejo. RAID 10 ofrece una mejor disponibilidad
yrendimiento que RAID 5, especialmente en aplicaciones de escritura
ntensiva.

La configuracin RAID ideal para su base de datos depender de varios
factores,entre los que se incluyen el rendimiento y la capacidad de recuperacin
necesarias. RAID 10 es el sistema recomendado para los archivos de registro de
transacciones, archivo, e ndices. Si tiene limitaciones de presupuesto, mantenga
losarchivos de registro en un sistema RAID 10 y almacene los archivos de datos
endice en un sistema RAID 5.

Prcticas recomendadas.
Para obtener el mejor rendimiento posible con los archivos de datos y registro,siga
estas recomendaciones:
Para evitar la contencin de disco, no aloje los archivos de datos en la
mismaunidad que contiene los archivos del sistema operativo.
Coloque los archivos de registro de transacciones en una unidad separada
dela unidad de archivos de datos. Esta subdivisin le permitir obtener
elmejor rendimiento posible, dado que reduce el riesgo de contencin
deldisco entre archivos de registro y archivos de datos.
Si es posible, coloque la base de datos tempdb en una unidad
distinta,preferiblemente en un sistema RAID 10 o RAID 1+0. En entornos en
los quese d un uso intensivo a las bases de datos tempdb, obtendr un
majorrendimiento si coloca tempdb en una unidad separada que permita a
SQL Server llevar a cabo operaciones tempdb en paralelo con las operaciones
dela base de datos.
Prctica: Configurar archivos de basesde datos y grupos
de archivos.
Esta prctica le mostrar cmo crear una base de datos que contenga
variosarchivos y grupos de archivo, para despus configurar uno de los grupos
comogrupo predeterminado.
Nota: Para el siguiente ejercicio, cree una carpeta llamada C:\AdSQL y dentro de ella dos
carpetas, Sales_Data y Sales_Data2. Si cuenta con una unidad de disco externa, cree
Project_Data2 en esa unidad. En el ejemplo asumiremos que existe una unidad externa
E:. De no contar con ella, cambie la ruta del ejemplo a C:\AdSQL\Sales_Data2.
1. Abra SQL Server Management Studio (SSMS).
2. Conecte a la instancia de SQL Server utilizando el modo de autenticacin
deWindows haciendo clic en Conectar.
3. Haga clic en Nueva consulta.
4. Escriba la primera parte de un comando CREATE DATABASE para crear unabase
de datos llamada Sales; esta base de datos tendr tres grupos de archivo:
CREATE DATABASE Sales
ON
5. Escriba la primera parte del cdigo que crear el grupo de archivos primarios
para contener el archivo SalesPrimary, como se muestra a continuacin:
PRIMARY
( NAME = SalesPrimary,
FILENAME = 'C:\AdSQL\Sales_Data\Salesprimary.mdf' ,
SIZE = 50MB,
MAXSIZE= 200,
FILEGROWTH =20),
6. Escriba la parte del cdigo que definir el segundo grupo de archivos,SalesFG,
que almacenar los datos contenidos en los archivos SalesData1 y SalesData2:
FILEGROUP SalesFG
( NAME = SalesData1,
FILENAME= ' E: \Sales_Data\SalesData1.mdf',
SIZE = 200MB,
MAXSIZE = 800,
FILEGROWTH = 100),
( NAME = SalesData2,
FILENAME = 'E: \Sales_Data\SalesData2.mdf' ,
SIZE = 400MB,
MAXSIZE = 1200,
FILEGROWTH = 300),
7. Aada el siguiente comando para crear el tercer grupo de
archivos,SalesHistoryFG, que almacenar informacin de historia del archive
SalesHistory1:
FILEGROUP SalesHistoryFG
( NAME SalesHistory1,
FILENAME = ' E: \Sales_Data\SalesHistory1.mdf' ,
SIZE =100MB,
MAXSIZE = 500,
FILEGROWTH = 50)
8. Escriba el cdigo para aadir un archivo de registro llamado SalesLog:
LOG ON
(NAME = Archlog1,
FILENAME = ' E:\Sales_Data\SalesHistory1.mdf' ,
SIZE = 300MB,
MAXSIZE = 800,
FILEGROWTH = 100)
9. Ejecute el comandocompleto CREATE DATABASE:
CREATE DATABASE Sales
ON
PRIMARY
( NAME = SalesPrimary,
FILENAME = 'D:\SalesData\Salesprimary.mdf' ,
SIZE = 50MB,
MAXSIZE= 200,
FILEGROWTH =20),
FILEGROUP SalesFG
( NAME = SalesData1,
FILENAME= ' E:\Sales_Data\SalesData1.mdf' ,
SIZE = 200MB,
MAXSIZE = 800,
FILEGROWTH = 100),
( NAME = SalesData2,
FILENAME = ' C:\Sales_Data\SalesData2.mdf' ,
SIZE = 400MB,
MAXSIZE = 1200,
FILEGROWTH = 300),
FILEGROUP SalesHistoryFG
( NAME SalesHistory1,
FILENAME = ' E: \Sales_Data\SalesHistory1.mdf' ,
SIZE =100MB,
MAXSIZE = 500,
FILEGROWTH = 50)
LOG ON
(NAME = Archlog1,
FILENAME = ' E:\Sales_Data\SalesHistory1.ldf' ,
SIZE = 300MB,
MAXSIZE = 800,
FILEGROWTH = 100)
10. Utilice el siguiente comando ALTER DATABASE para configurar el grupode
archivos SalesFG como grupo predeterminado para la base de datos.Todos los
objetos creados en la base de datos despues de realizar este cambioquedarn
almacenados por defecto en SalesFG:
ALTER DATABASE Sales
MODIFY FILEGROUP SalesFG DEFAULT










Tema 2: Especificarun escenario de
recuperacin.
Un escenario de recuperacin es una opcin de configuracin de la base de datos
que controla el modo de registro de las transacciones, si se ha realizado una copia
de seguridad de las mismas, y cules son las opciones de recuperacin para la base
de datos. El modelo de recuperacin elegido afectar tanto a la recuperacin de
datos como al rendimiento de la propia base de datos, basndose en los registros
que el modelo de recuperacin haya llevado o no a cabo.

Resumen de modelos de recuperacin
SQL Server 2012 ofrece tres modelos de recuperacin de bases de datos distintos:
completa, simple y de registro masivo. Estos tres modelos determinan
elfuncionamiento de SQL Server con respecto al archivo de transacciones y
selecciona las operaciones registradas; determina tambin si el registro se ha
vistotruncado. Damos la denominacin de truncar el registro de transacciones
alproceso de eliminar transacciones. A continuacin se definirn cada uno de
losmodelos de recuperacin disponibles:
En el modelo completo, el motor de la base de datos registra todas las
operaciones en el registro de transacciones. El registro nunca se trunca. Este
modelo le permite recuperar una base de datos hasta el momento del fallo
(ohasta un punto anterior en el tiempo si utiliza SQL Server 2012
EnterpriseEdition).

En el modelo simple, el motor de la base de datos registra de forma
minimacasi todas las operaciones y trunca el registro de transacciones
despus decada punto de comprobacin. En este modelo, no se pueden
hacer copias deseguridad ni es posible recuperar el registro de transacciones.
Esms: tampocopodrrestaurarpginasindividuales de datos.



El modelo de recuperacin simple no es adecuado para aquellas bases de datosen
las que se ha producido una prdida reciente de datos que han de ser recuperados
obligatoriamente.

En el modelo de registro masivo, el motor de la base de datos registra
deforma mnima las operaciones de tipo masivo, tales como SELECT INTO
yBULK INSERT. En este modelo de recuperacin, cuando una copia de
seguridad de registro contiene cualquier operacin de tipo masivo, es
possiblerestaurar la base de datos hasta el final de la copia de seguridad de
registro, pero no hasta un punto concreto en el tiempo. Este modelo est
diseadopara ser utilizado nicamente en operaciones masivas.


Configuracin de modelos de recuperacin.

Puede ver el modelo de recuperacin especificado para una base de datos concreta
en la pgina de Propiedades de la base de datos en SSMS o ejecutando la consulta
sys.databases en la vista del catlogo, tal y como se muestra acontinuacin:

SELECT name, recovery_model_descFROMsys.databases

Para configurar el modelo de recuperacin para una base de datos, puede ir a la
pgina de Propiedades de la base de datos en SSMS o utilizar el comando
ALTERDATABASE.

En SSMS, es posible cambiar el modelo de recuperacin siguiendo estos pasos:

1. Expanda la pestaa Bases de datos debajo del Explorador de objetos en SSMS
2. Haga clic con el botn derecho en la base de datos para la que desea establecer
unmodelo de recuperacin y elija Propiedades. Seleccione la pgina deOpciones.
3. Puede cambiar el modo de recuperacin desde la pestana desplegable Modelo de
recuperacin, como se muestra en la figura 1.

Figura 1. Cambiar el modelo de recuperacin en SSMS.

La sintaxis bsica para configurar el modelo de recuperacin utilizando
ALTERDATABASE es la siguiente:
ALTER DATABASE <database name>
SET RECOVERY FULL | SIMPLE | BULK_LOGGED
Como ya se ha apuntado con anterioridad, el modelo completo de recuperacines el
indicado para una base de datos en un entorno de produccin, ya que es elque
proporciona la configuracin de mayores posibilidades de recuperacin. Sise
importan datos peridicamente utilizando un mecanismo masivo, es posible
cambiar temporalmente el modelo de recuperacin de su base de datos a unmodelo
de registro masivo para obtener un mejor rendimiento en la operacinmasiva.
Cuando el proceso de importacin llegue a su fin, haga que su base dedatos vuelva
al modelo completo.
Prctica: Cambiar el modelode recuperacin de una base
de datos.
Esta prctica le mostrar cmo cambiar el modelo de recuperacin de una basede
datos a un modelo de registro masivo para obtener un buen rendimiento
enoperaciones masivas, y posteriormente volver al modelo completo.
1. Establezca el modelo de registro masivo como modelo de recuperacin parala
base de datos AdventureWorks ejecutando el siguiente comando ALTER DATABASE
(antes de modificar el modo, haga una copia de seguridad).

-- Antes de crear la copia de seguridad, deber crear una carpetaC:\AdSQL\Backup
al nivel del SO.
BACKUP DATABASE AdventureWorks TO DISK =
' C:\AdSQL\Backup\AdventureWorks.Bak'
GO
- - Cambie el modelo de recuperacin a modo de registro masivo
ALTER DATABASE AdventureWorks
SET RECOVERY BULK_LOGGED

2. Escriba y ejecute el siguiente comando ALTER DATABASE para volver acambiar el
modelo de recuperacin a completo tras habar realizado las operaciones masivas
necesarias; haga otra copia de seguridad de la base de datospara tener una copia
de los datos que acaba de cargar:
ALTER DATABASE AdventureWorks
SET RECOVERY FULL
-- Realice una copia de seguridad de toda la base de datos
BACKUP DATABASE AdventureWorks TO
DISK='C:\AdSQL\Backup\AdventureWorks.Bak'

Tema 3: Configuracinde los
elementosprincipalesde la seguridaddel
servidor.

SQL Server 2012 ofrece un modelo de seguridad completo que le ayudar aimpedir
el acceso no autorizado a recursos de datos importantes. Este modelo sebasa en
una serie de permisos que se otorgan a los elementos principales de labase de
datos (individuos, grupos y procesos que puedan utilizar recursos deSQL Server).
SQL Server 2012 se encarga de la autenticacin de los permisos para todas
lasconexiones de usuario, de manera que todas las conexiones tengan que
especificar tanto un modo como unas credenciales de autenticacin. Podr elegir
entredos modos de autenticacin diferentes (modo de autenticacin de Windows
ymodo mixto de autenticacin) que controlan el modo de conexin utilizado porlos
usuarios para conectar a SQL Server. Puede crear dos tipos de inicio desesin en
SQL Server (Windows o SQL Server) que le permitirn administrar elacceso a la
instancia SQL Server.
Para ayudarle a administrar los inicios de sesin de los elementos principalescon
privilegios administrativos en SQL Server, puede ordenar estos inicios desesin en
funciones fijas de servidor. Tanto el modo de autenticacin como losinicios de
sesin constituyen el primer nvel de seguridad en SQL Server, demodo que deber
estudiar detenidamente cul es la opcin ms segura a la horade configurar su
entorno.

Elegir entre diferentes modosde autenticacin.

SQL Server 2012 le ofrece dos modos de autenticacin para acceder a los recursos
de la base de datos: el modo Windows y el modo mixto de autenticacin:


Autenticacin Windows: Si configura SQL Server para utilizar autenticinde
Windows, nicamente los usuarios autenticados por Windows podrn tener
acceso a la instancia SQL Server. Deber aadir un inicio de session de
Windows para cada usuario del sistema o grupo que necesite accede a la
instancia. Este es el modo de autenticacin predeterminado y recomendado
ya que con l podr beneficiarse de las polticas de seguridad centralizadas
de su dominio Active Directory.


Modo de autenticacin mixto: El modo de autenticacin mixto permite a los
usuarios acceder a la instancia de SQL utilizando inicios de sesin tanto de
Windows como de SQL Server (ninguno de los cuales est asignadoa un
usuario concreto del sistema operativo). Este modo de autenticacin se
utiliza cuando se quiere conceder acceso a usuarios que no utilicen Windows
(por ejemplo, cuando los usuarios de otro sistema operativo necesitan
acceder a SQL Server).


Puede cambiar el modo de autenticacin utilizando las Propiedades del servidorde
SSMS. Para ello, habr de seguir estos pasos:


1. En SSMS, haga clic con el botn derecho sobre su servidor y elija Propidades.

2. Seleccione la pgina de Seguridad.

3. Debajo de Autenticacin de servidor, seleccione el modo de autenticacin que
desea utilizar en su servidor. Puede seleccionar el Modo de autenticin de Windows,
o el Modo de autenticacin de Windows y SQL Server.

4. Haga clic en Aceptar para guardar los cambios.

5. Haga clic en Aceptar para cerrar el cuadro de dilogo que le avisar de
quealgunos cambios en la configuracin no surtirn efecto hasta que reinicie el SQL
Server.
6. Para reiniciar su servidor, haga clic con el botn derecho en su servidordebajo
del Explorador de objetos y elija Reiniciar.

Configuracin de inicios de sessionen SQL Server.
Los inicios de sesin son aquellos elementos principales del servidor que permiten a
los usuarios acceder a SQL Server. Puede crear inicios de sesin de formagrfica en
SSMS o mediante un comando CREATE LOGIN.
La sintaxis bsica CREATE LOGIN para crear un inicio de sesin en Windows es:
CREATE LOGIN [Domain\User] FROM WINDOWS

La sintaxis para crear un inicio de sesin de SQL Server es:
CREATE LOGIN login_name WITH PASSWORD=password
Para inicios de sesin de SQL Server, puede especificar cul de las
siguientesopciones prefiere en el momento de crear el inicio de sesin:
MUST_CHANGE: El inicio de sesin deber cambiar la contrasea en el
siguiente inicio de sesin.
CHECK_EXPIRATION: SQL Server comprobar la poltica de caducidad
deWindows para el inicio de sesin de SQL Server.
CHECK_POLICY: SQL Server aplicar la poltica local de contraseas
deWindows a todos los inicios de sesin de SQL Server.
En el siguiente ejemplo, va a crear un inicio de sesin de SQL Server y exigir
unacomprobacin de la poltica de contrasea y de caducidad de contrasea:
CREATE LOGIN secureSQL WITH PASSWORD= Ty%6tSfS$g23,
CHECK_EXPIRATION = ON,
CHECK_POLICY=ON

Poltica de contraseas
Para conseguir un entorno SQL Server seguro, deber utilizar las
opcionesdisponibles para la comprobacin de la poltica de caducidad de
Windowspara inicios de sesin de SQL Server y aplicarles la poltica de
contraseasde Windows.

Si necesita cambiar alguna propiedad del inicio de sesin, puede utilizar el comando
ALTER LOGIN. El siguiente ejemplo le mostrar cmo cambiar la contrasea para
un inicio de sesin de SQL Server:
ALTER LOGIN login_name WITH PASSWORD=password
Cuando necesite eliminar un inicio de sesin, puede utilizar el comando
DROPLOGIN:

DROP LOGIN login_name
O puede utilizar la siguiente sintaxis:
DROP LOGIN [Domain\User]
Para obtener informacin de inicio de sesin de SQL Server tal como opcionesde
estado o de inicio de sesin, puede ejecutar la consulta sys.sql_loginsen la vista del
catlogo.
Eliminar logines
No es posible eliminar un inicio de sesin que contenga un elemento deseguridad,
objeto a nivel de servidor, o un trabajo del Agente de SQL Server.Deber
deshabilitar los inicios de sesin antes de eliminarlos, y eliminarlosnicamente
cuando est completamente seguro de que la accin no afectara su entorno.
Adems, si el inicio de sesin ha sido asignado a un usuario de la base dedatos y se
elimina, SQL Server no eliminar al usuario de forma automtica,de modo que
tendr un usuario hurfano.
Normalmente, los ABD necesitan administrar excepciones a la hora de
habilitaraccesos a un grupo de Windows. Por ejemplo, es probable que deba
habilitaraccesos para todos los miembros de un grupo determinado de Windows,
salvouno. Para realizar esta tarea, deber crear un inicio de sesin de Windows
para elgrupo de Windows y posteriormente denegar el acceso al usuario concreto
queno debe tener acceso.
En el siguiente ejemplo se muestra la sintaxis bsica para llevar a cabo
estaoperacin:
CREATE LOGIN [domain_name\group_name] FROM WINDOWS
DENY CONNECT SQL TO [domain_name\User_name]

Administrar funciones fijas de servidor
SQL Server le ofrece un conjunto de funciones fijas de servidor, tales
comosysadmin y securityadmin, que podr utilizar para asignar y
administrarprivilegios de administracin para los inicios de sesin, aadiendo inicios
desesin en calidad de miembros de estas funciones. La tabla 2 describe
lasfunciones fijas del servidor para SQL Server 2012.




Tabla 2. Funciones fijas de servidor de SQL Server.
Funcin fija del servidor Los miembros pueden...
sysadmin Realizar cualquier actividad en SQL Server. Lospermisos
de esta funcin engloban los permisos de todas las dems
funciones fijas del servidor.
serveradmin Configurar ajustes a nivel de servidor.
setupadmin Aadir y eliminar servidores enlazados yejecutar algunos
procedimientos de almacenamiento del sistema, como por
ejemplosp_serveroption.
securityadmin Administrar los inicios de sesin del servidor.
Processadmin Administrar los procesos ejecutndose en unainstancia de
SQL Server.
dbcreator Crear y alterar bases de datos.
diskadmin Administrar archivos de disco.
bulkadmin Ejecutar el comando BULK INSERT.

Para obtener ms informacin acerca de la funcin fija del servidor, puede ejecutar
la consulta sys.server_role_members en la vista del catlogo, quele devolver una
fila por cada miembro de funcin del servidor.

La sintaxis bsica para aadir un inicio de sesin a una funcin fija de servidor es:
EXECUTE sp_addsrvrolememberlogin_name, fixed_server_role
Puede utilizar el procedimiento almacenado sp_dropsrvrolemember paraeliminar el
inicio de sesin de la funcin fija del servidor.
De forma alternativa, tambin puede utilizar SSMS para aadir o eliminar inicios de
sesin de funciones fijas del servidor. Puede llevar a cabo estas tareasmostrando
las propiedades bien de los inicios de sesin, bien de la funcin delservidor.

Prctica: Seleccionar un modode autenticacin y crear un
iniciode sesin.
Ests prcticas le permitirn cambiar el modo de autenticacin de su servidor aun
Modo mixto y crear un inicio de sesin de SQL Server. Reforzar la polticade
contrasea y de caducidad de contraseas para ese inicio de sesin y aadirel
inicio de sesin a la funcin fija del servidor sysadmin.

Prctica 1: Cambiar el modo de autenticacin.
En esta prctica, cambiaremos el modo de autenticacin a Modo mixto.
1. En SSMS, haga clic con el botn derecho en su servidor y elija Propiedades.
2. Seleccione la pgina de Seguridad. Debajo de Autenticacin de
servidor,seleccione Modo de autenticacin de Windows y de SQL Server.
3. Haga clic con el botn derecho en su servidor y elija Reiniciar para que el cambio
tenga efecto.

Prctica 2: Aadir inicio de sesin en SQL Server.
En esta prctica, aadiremos un nuevo inicio de sesin en SQL Server y
estableceremos restricciones de caducidad y de comprobacin. Posteriormente se
aadir el inicio de sesin a la funcin fija del servidor sysadmin.
1. En el explorador de objetos, expanda la carpeta Seguridad, haga clic con el
botn derecho en Inicio desesin y elija Nuevo inicio de sesin. Aparecer un nuevo
cuadro de dilogo Inicio de sesin>Nuevo.
2. En la caja de texto Nombre de inicio de sesin, escriba sqlLogin.
3. Seleccione la opcin de Autenticacin de SQL Server; en las cajas de textode
Contrasea y Confirmar contrasea, escriba Pa$$w0rd.
4. Desactive la casilla El usuario debe cambiar la contrasea en el prximoinicio de
sesin.
5. Para aadir el inicio de sesin a la funcin fija de servidor sysadmin,seleccione la
pgina Funciones del servidor(server roles). Active la casilla sysadmin yhaga clic en
Aceptar. Intente acceder con esta cuenta. No ser posible, veamos el sig. tema.
Tema 4: Configuracinde los
asegurablesde la base de datos.
Ya hemos estudiado cmo los elementos principales de seguridad del servidorson
las entidades que solicitan el acceso a los recursos de la base de datos.
Losasegurables (securables) son, en cambio, las entidades que permiten o no a
loselementos principales acceder a dichos recursos. En el nivel ms alto de
elementos que deben ser asegurados se encuentran los servidores y las bases de
datos,pero tambin pueden establecerse permisos a niveles inferiores. Estetema
seocupar de los asegurables al nivel de la base de datos.
Tras haber configurado el modo de autenticacin y de crear inicios de sesin
paralos elementos principales, necesita habilitar los permisos de acceso
adecuadospara la base de datos. Para llevar a cabo esta accin, deber vincular
cada uno delos inicios de sesin de la base de datos que deben acceder a la misma
a un usuariode la base de datos. Para una administracin ms fcil y rpida, puede
aadir losusuarios de la base de datos como miembros de funciones de la misma.

Administracin de los usuarios de la basede datos.
Para establecer inicios de sesin de acceso a una base de datos, necesita crear
unusuario de la base de datos para cada uno de los inicios de sesin necesarios
paraacceder a la misma. Deber crear el usuario en la base de datos a la que
dichousuario deba acceder. La sintaxis bsica para crear un usuario de base de
datoses:
CREATE USER user_name FOR LOGIN login_name

Si no especifica un nombre de inicio de sesin, SQL Server intentar crear
unusuario vinculado a un inicio de sesin con el mismo nombre.Puede utilizar el
comando ALTER USER para modificar las propiedades del usuario y el
comandoDROP USER para eliminar a los usuarios de la base de datos.Puede
tambin utilizar SSMS para crear y administrar los usuarios de la base dedatos;
puede administrarlos desde Inicios de sesin bajo la pestaa de Seguridad, o en
Usuarios debajo de cada una de las pestaas de Bases de datos.
Cuando un inicio de sesin no tiene ningn usuario vinculado al mismo queintente
acceder a la base de datos, SQL Server buscar un usuario Invitado a labase de
datos. SQL Server crea un usuario Invitado en cada base de datos. Elusuario
Invitado no est autorizado, de forma predeterminada, a conectar con labase de
datos. Puede permitir que este usuario se conecte activando esta cuentade usuario
Invitado como se explica a continuacin:
GRANT CONNNECT TO Guest
Puede volver a denegar el acceso al invitado ejecutando el siguiente comando:
REVOKE CONNECT TO Guest

Administracin de usuarios hurfanos.
El trmino usuarios hurfanos hace referencia a aquellos usuarios de la basede
datos que no estn vinculados a ningn inicio de sesin en la instancia SQLServer.
En SQL Server 2012, un usuario se convertir en usuario hurfano cuando se
elimine el inicio de sesin que se le ha asignado. Para obtener ms informacin
sobre usuarios hurfanos, ejecute el siguiente comando:
USE AdventureWorks;
GO
EXECUTE sp_change_users_login @Action=' Report' ;

Eliminacin de usuarios de la base de datos.
El motor de la base de datos no le permitir eliminar usuarios de la base dedatos si
poseen un esquema que contenga objetos. Deber transferir elesquema a otro
usuario o funcin antes de eliminar a este usuario de la basede datos.

Administracin de las funcionesde la base de datos.
En caso de tener muchos usuarios de la base de datos, los procesos de
creacin,modificacin y eliminacin de usuarios, as como el proceso de asegurar
quetodos los usuarios tienen los permisos adecuados, puede resultar una
labortediosa que llevar mucho tiempo. Para ayudarle en la administracin de
estastareas, cada uno de los usuarios de base de datos le ofrece un conjunto
defunciones fijas que podr utilizar para agrupar a usuarios similares. La tabla
3describe estas funciones.


Tabla 3. Funciones fijas de bases de datos SQL Server.
Funcin fija de base Permisos a nivel de base de datos
de datos
db_accessadmin Concedido: ALTER ANY USER, CREATE SCHEMA
dbaccessadmin Concedido con a opcin GRANT: CONNECT
dbbackupoperator Concedido: BACKUP DATABASE, BACKUP LOG,
CHECK- POINT
dbdatareader Concedido: SELECT
cbdatawriter Concedido: DELETE, INSERT, UPDATE
dbddladmin Concedido: ALTER ANY ASSEMBLY, ALTER ANY
SIMMETRIC KEY, ALTER ANY CERTIFICATE,
ALTER ANY CONTRACT, ALTER ANY DATABASE
DOL TRIGGER, ALTER ANY DATABASE EVENT,
NOTIFICATION, ALTER .ANY DATASPACE, ALTER ANY
FULLTECT CATALOG, ALTER ANYMESSAGE TYPE, ALTER
ANY REMOTE SERVICEBINDING, ALTER ANY ROUTE,
ALTER ANYSCHEM, ALTER ANY SERVICE, ALTER
ANYSYMMETRIC KEY, CHECKPOINT, CREATEAGGREGATE,
CREATE DEFAULT, CREATEFUNCTION, CREATE
PROCEDURE, CREATEQUEUE, CREATE RULE, CREATE
SYNONYM,CREATE TABLE, CREATE TYPE, CREATE VIEW,
CREATE XML SCHEMA COLLECTION, REFERENCES
db_denydatareaderDenegado: SELECT
db_denydatawriter Denegado: SELECT, INSERT, UPDATE
dbowner Concedido con la opcin GRANT: CONTROL
db_securityadmin Concedido: ALTER ANY APPLICATION ROLE,ALTER ANY
ROLE, CREATE SCHEMA, VIEWDEFINITION



Administracin de las funciones de miembrosde la base de datos.
Los miembros de las funciones db_owner y db_securityadmin puedenllevar la
administracin de miembros de funciones fijas de la base de datos,pero slo
miembros de la funcin db_owner pueden aadir miembros a estafuncin.
Puede tambin crear sus propias funciones de base de datos para agrupar a
losusuarios de la base de datos que tengan las mismas necesidades de acceso
yasignar permisos a un grupo en lugar de asignar permisos de forma individual
acada usuario. Por ejemplo, puede agrupar a usuarios que sean miembros
deldepartamento de Contabilidad en una funcin de bases de datos
denominadaAccounting, de modo que pueda asignar permisos nicamente a esa
funcinde la base de datos y hacer que los permisos sean aplicables a todos los
miembros de ese grupo.
La sintaxis bsica para crear una funcin de la base de datos es
CREATE ROLE rolename
Puede modificar las propiedades de la funcin utilizando el comando ALTERROLE, y
eliminarlas mediante el comando DROP ROLE. Puede tambin administrar las
funciones de la base de datos utilizando SSMS partiendo de la pestaaSeguridad
situada debajo de cada base de datos.
Para aadir un usuario de la base de datos a una funcin, utilice el procedimiento
almacenado sp_addrolemember con la siguiente sintaxis:
EXECUTE sp_addrolememberrole_name, user_name
De forma alternativa, tambin puede aadir un usuario de la base de
datosmediante SSMS, modificando las propiedades de usuario de la base de datos o
laspropiedades de la funcin.

Puede anidar las funciones de la base datos de modo que pueda aadir funcionesde
la misma a otras funciones. Imagine, por ejemplo, que desea agrupar a todos
losencargados del departamento de Contabilidad en una funcin de la base de
datosllamada AccountingMgr. Podra conceder a esa funcin los permisos
concedidos a la funcin Accounting, anidando AccountingMgr dentro deAccounting y
posteriormente aadiendo los permisos extra a la funcinAccountingMgr. Para
obtener informacin sobre los miembros de una funcinde la base de datos, puede
ejecutar la consulta sys.datablase_role_members,que le mostrar una fila
porcada miembro de la funcin.
Esquemas de administracin.
SQL Server 2012 pone en prctica el concepto ANSI de esquemas, esto es,
colecciones de objetos de la base de datos (tales como tablas, vistas,
procedimientosalmacenados y desencadenadores o triggers) que conforman un
nico espacio.La principal ventaja de los esquemas en SQL Server 2012 es que los
esquemas ylos usuarios son ahora entidades separadas. El nombre de usuario ya
no formaparte del nombre del objeto, tal y como ocurra en anteriores versiones de
SQLServer, de modo que ahora es posible eliminar usuarios o cambiar el nombre
deun usuario sin tener que realizar cambios en la aplicacin. Cada esquema
pertenece a un usuario o funcin, pero en caso de que necesite eliminar a
dichousuario o funcin, simplemente deber transferir la propiedad del esquema
delusuario o funcin que va a ser eliminado a un nuevo usuario o funcin.La
sintaxis bsica para crear un esquema es:
CREATE SCHEMA schema_name AUTHORIZATION owner
Para modificar un esquema, puede utilizar el comando ALTER SCHEMA;
paraeliminar un esquema, utilice el comando DROP SCHEMA. Puede tambin
realizar estas tareas desde SSMS. Para obtener informacin sobre los esquemas,
ejecute la consulta sys.schemas.
Adems, puede asignar un esquema predeterminado a cada usuario de la basede
datos. Este esquema por defecto se emplea cuando el usuario no especificael
nombre del esquema a la hora de acceder a un objeto. Por ejemplo, si elusuario
Pedro tiene un esquema predeterminado de RecursosHumanos yquiere acceder a la
tabla de Empleado sin especificar ningn esquema, puedesimplemente especificar
Empleado en lugar de tener que especificarRecursosHumanos.Empleado.

Puede asignar un esquema predeterminado mediante los comandos CREATEUSER o
ALTER USER. Tambin puede asignar un esquema predeterminado atravs de
SSMS, en las propiedades de usuario.

Prctica: Configuracin de los asegurablesdel servidor.

En esta prctica, aprender a configurar los asegurables del servidor para la basede
datos Adventureworks. Crear un inicio de sesin y un usuario de basede datos
para el usuario Peter. Peter necesita tener acceso a los objetos delesquema
HumanResources en AdventureWorks.


1. Utilice el comando CREATE LOGIN para crear un inicio de sesin de SQLServer y
un nombre de usuario llamado Peter que tenga acceso a la base dedatos
Adventureworks:

CREATE LOGIN Peter WITH PASSWORD=' Pa$$w0rd'

GO

USE AdventureWorks

GO

CREATE USER Peter FROM LOGIN Peter

2. Conceda a Peter el permiso SELECT para los objetos de la base de datos con
el siguiente comando (preste atencin al elemento de sintaxis:: para especificar un
nombre de esquema):

GRANT SELECT ON SCHEMA:: [HumanResources]TO [Peter]

3. Haga clic en Nueva Consulta. Haga clic derecho en la zona de consultas(rea de
escritura de scripts) y elijaConexin>Cambiar Conexin. Establezca una conexin
utilizando el inicio de sesin Peter y la contrasea Pa$$w0rd.

4. Ejecute la siguiente consulta para comprobar el acceso de Peter a SQL Server:

USE Adventureworks

GO

SELECT * FROM Employee


5. Obtendr un mensaje de error de Objeto no vlido, lo cual quiere decir queel
usuario Peter no tiene los permisos adecuados para acceder a la tablaEmployee.
Deber resolver este problema ejecutando el siguiente comando ALTER USER para
designar HumanResources como esquema predeterminado para Peter, de modo que
Peter pueda seleccionar la tabla Employeedirectamente sin tener que utilizar el
nombre de esquema HumanResourcespara calificar la tabla nombrada:

ALTER USER Peter WITH DEFAULT_SCHEMA=HumanResources

6. Ejecute nuevamente la consulta del paso 4. Ahora debera obtener un resultado
vlido.


Tema 5: Creacin de ndices.

Hemos visto cmo la creacin de tablas constituye el primer paso en la construccin
de una buena base de datos. Posteriormente, es necesario aadir datos a dichas
tablas. Sin embargo, si esos datos nunca van a ser recuperados, estaremos
perdiendo intilmente espacio de almacenamiento. SQL Server no necesita que las
tablas estn indexadas para recuperar datos: puede, simplemente explorar una
tabla para encontrar la informacin buscada. No obstante, la mayor parte de
organizaciones almacenan cantidades masivas de datos en una tabla y necesitan
poder recuperarlos de forma instantnea. Para permitir que los datos puedan
recuperarse con rapidez sin que el rendimiento empeore a medida que los usuarios
van aadiendo filas a una tabla, es necesario utilizar ndices.

Los ndices no constituyen una novedad, y tampoco son un concepto exclusivo de
una base de datos. De hecho, los utilizamos todos los das. Por ejemplo: en un
libro, usted encontrar un ndice impreso. Si quisiera leer sobre ndices de texto
para preparar ese tema concreto de su examen, podra encontrar la informacin de
dos maneras: podra abrir el libro, empezar en la pgina 1 y hojear cada pgina
hasta encontrar la informacin. O bien, puede dirigirse al ndice situado al final del
libro, localizar el tema y dirigirse directamente a las pginas correspondientes al
mismo. Encontrar la informacin de igual manera, pero la utilizacin del ndice es
una manera ms eficiente de hacerlo.


Vamos a explicar cmo SQL Server construye y utiliza ndices para asegurar una
recuperacin de datos rpida y una mayor estabilidad en el rendimiento

Caso de uso: ndices en el mercado (Michael Hotek)
Hace ya algunos aos, cuando SQL Server 6.5 llevaba ya una temporada en el
mercado, comenc un proyecto para una nueva compaa en Chicago. La compaa
quera ayudar a la gente a encontrar un piso que se ajustara a los criterios de
bsqueda de sus clientes. Uno de los empleados haba odo hablar de un lenguaje
de programacin llamado Visual Basic que les permita crear el tipo de aplicacin
que necesitaban para administrar los cientos de complejos residenciales de la zona.
Crearon la aplicacin, la probaron y entraron en la fase de produccin. Cuatro
meses ms tarde, el negocio no dejaba de crecer y la compaa abri vanas oficinas
en diferentes partes del pas.

Y entonces, la compaa empez a tener problemas. La bsqueda de pisos
mediante la aplicacin de SQL Server cada vez llevaba ms tiempo. Muchos
empleados llegaron a tal punto de frustracin que comenzaron a elaborar sus
propios archivos en papel. El desarrollador haba revisado el cdigo y no poda
localizar el problema, de modo que la compaa me llam para examinar la parte
correspondiente al uso de SQL Server en la aplicacin.


Lo primero que hice fue preguntar al desarrollador si haba revisado los ndices de
las tablas en SQL Server. Encontr la respuesta al bajo rendimiento de la aplicacin
cuando el desarrollador me pregunt qu era un ndice. Tard una hora en llegar a
la oficina central y 15 minutos en resolver el problema de rendimiento, implemente
aadiendo varios ndices clave. Pas el resto del da indexando otras tablas para
evitar problemas en el futuro, y explicando a la persona encargada del desarrollo
qu era un ndice, por qu era til y cmo decidir qu elementos deban ser
indexados


La estructura de ndices.


Un ndice resulta til solamente si nos ayuda a localizar datos rpidamente,
independientemente de la cantidad de datos que tengamos almacenados. Eche un
vistazo al ndice de cualquier libro: contiene solamente una pequea muestra de
todas las palabras del libro, ofreciendo un modo compacto de buscar la informacin.
Siel ndice se organizara en funcin de las pginas en las que aparece una
palabradeterminada, tendra que leer muchos prrafos y pginas hasta encontrar la
informacin deseada. En lugar de eso, el ndice se organiza alfabticamente, lo
cualsignifica que usted puede dirigirse a un lugar especfico del ndice para
encontrarlo que busca. Tambin le permite escanear hasta encontrar la palabra que
busca, tras lo cual sabe que ya no debe buscar ms all. Un ndice en SQL Server
seorganiza de forma parecida. Veremos ahora cmo SQL Server utilizauna
estructura de rbol-B para construir ndices, que le ofrece un mtodo
derecuperacin rpida de datos an con tablas extremadamente grandes.


La estructura de rbol.

SQL Server utiliza una estructura de rbol-B para construir y mantener ndices. La
ilustracin en la figura 2 muestra una estructura de rbol-B.

Un rbol-B est compuesto de un nodo raz que contiene una nica pgina dedatos,
ninguno o ms niveles intermedios con pginas adicionales y un nivel ocapa de
hojas. Las pginas de la capa de hojas contienen entradas agrupadaspor orden que
se corresponden con los datos indexados. EI nmero de filasindexadas de una
pgina viene determinado por el espacio de almacenamiento requerido por las
columnas definidas en el ndice. Por ejemplo: un ndicedefinido sobre una columna
de enteros de 4 bytes tendr cinco veces msvalores por pgina que un ndice
definido sobre una columna char(60) quequiera 60 bytes de almacenamiento por
pgina.

Figura 2. Arquitectura general de ndices.


SQL Server crea los niveles intermedios tomando la primera entrada de cadapgina
de la capa de hojas y almacena las entradas en una pgina con unpuntero a nivel
de pgina de capa de hojas. La pgina raz se construye de lamisma manera.

Al construir un ndice de este modo, SQL Server puede realizar bsquedas entablas
con billones de filas de datos con tanta rapidez como si tuvieran tanslo unos
cientos de filas. Veamos la estructura del rbol de la figura 3 paraver cmo una
consulta utiliza un ndice para localizar datos con rapidez:



Figura 3. Construccin de ndices.


Si por ejemplo estuviramos buscando el trmino SQL Server, la consulta
explorara la pgina raz. Encontrara el valor O y el valor T. Dado que Sviene antes
de T, la consulta sabe que necesita mirar en la pgina O paraencontrar los datos
necesarios. La consulta se trasladara entonces al nivelintermedio hacia el que
apunta O. Ntese que con esta operacin hemoseliminado directamente tres
cuartas partes de las posibles pginas de bsqueda
explorando un subconjunto muy pequeo de valores. Posteriormente, la consulta
explorara la pgina del nivel intermedio y encontrara elvalor S; se dirigira hacia la
pgina hacia la que apunta esta entrada. Hastaahora, la consulta ha explorado
exactamente dos pginas del ndice para encontrar los datos necesarios. Ntese
que independientemente de la letraque elijamos, localizar la pgina que contiene
las palabras que comienzancon la letra elegida implica consultar, exactamente, dos
pginas.

Este comportamiento explica por qu la estructura delndice es una estructura de
rbol-B. Cada una de las bsquedas realizadas transita por elnmero de niveles en
el ndice para localizar los datos que nos interesan.

E nmero de niveles en un ndice, as como el nmero de pginas dentrocada nivel,
viene determinado por un simple clculo matemtico. Una pgina de datos en SQL
Server ocupa 8,192 bytes y puede almacenar hasta 8,060 bytes de informacin.

Si construimos un ndice sobre una columna char(60), cada fila de la tabla
requerira 60 bytes de almacenamiento, lo cual supone ocupar tambin 60 bytes de
almacenamiento por fila dentro del ndice.

Si nicamente tenemos 100 filas de datos en la tabla, necesitaramos 6,000 bytes
de almacenamiento. Dado que todas las entradas cabran en unapgina de datos, el
ndice tendra una nica pgina que sera a su vez la pginade la capa dehojas. De
hecho, podramos almacenar 134 filas en la tabla y anas designar una nica
pgina para el ndice.

Tan pronto como aadiramos la fila nmero 135, sin embargo, las
entradasdejaran de caber en una nica pgina, de modo que SQL Server crea
dospginas adicionales. Esta operacin crea un ndice con una pgina raz y
dospginas de capa de hojas. La primera pgina de nivel o capa de hojas contiene
la primera mitad de las entradas; la segunda, la otra mitad; y la pgina
razcontiene dos filas de datos. Este ndice no necesitara un nivel intermediopuesto
que la pgina raz pude contener todos los valores al principio de laspginas de
nivel de hojas. En este punto, una consulta necesitara explorardos pginas del
ndice para localizar cualquier fila de la columna.

Podemos continuar aadiendo filas a la tabla sin afectar al nmero de niveles en
elndice hasta llegar a la cifra de 17,957 filas. Llegado este punto, tendramos
134pginas de nivel de hojas con 134 entradas cada una. La pgina raz tendra
134 entradas correspondientes a la primera fila de cada una de las pginas del nivel
de hojas. Cuando se aade la fila 17,957 a la tabla, SQL Server necesita crear
unanueva pgina para el ndice al nivel de capa de hojas, pero la pgina raz no
puedetener ms de 135 entradas porque se excedera de los 8.060 bytes
permitidos porpgina. De manera que SQL Server aade un nivel intermedio que
contiene dospginas. La primera contiene la entrada inicial de la primera mitad de
las pginasdel nivel de hojas, y la segunda contiene la entrada inicial de la segunda
mitad. Lapgina raz contendra ahora dos filas, correspondientes al valor inicial de
cadauna de las dos pginas intermedias.

La prxima vez que SQL tenga que introducir un nuevo nivel intermedio seraal
aadir la fila nmero 2, 406,105 a la tabla.

Como puede verse, este tipo de estructura permite que SQL Server localice muy
rpidamente las filas relativas a la consulta, an en tablas extremadamente largas.

En este ejemplo, encontrar una fila en una tabla con cerca de 2.5 millones de filas
requerira que SQL explorase nicamente tres pginas dedatos. La tabla podra
seguir creciendo hasta tener ms de 300 millones defilas antes de que SQL Server
tuviera que leer 4 pginas.Tenga en cuenta que este ejemplo utiliza una columna
char(60). Si crease un ndice con una columna int que requiriera nicamente 4
bytes de almacenamiento, SQL Server tendra que leer una nica pgina para
localizar lafila hasta que se introdujera la fila nmero 2,016. Podran aadirse algo
msde 4 millones de filas a la tabla y seguir necesitando nicamente la lecturade
dos pginas para encontrar una fila. Habra que llegar hasta los 8 milmillones de
filas antes de que SQL Server necesitara leer tres pginas paraencontrar la fila en
cuestin.








Tema 6:Crearndices agrupados.
El primer tipo de ndice que debe crearse en una tabla es un ndice agrupado.Como
regla general, toda tabla debe tener un ndice agrupado, y cada tablapodr tener
nicamente un ndice de este tipo. En esta leccin, aprender a crearun ndice
agrupado utilizando la instruccin CREATE INDEX de Transact-SQL,incluyendo las
opciones que pueden especificarse para este comando. Por ltimo, aprender a
deshabilitar y rehabilitar un ndice agrupado.
Implementacin de ndices agrupados.
Las columnas definidas para un ndice agrupado se denominan clave de
agrupamiento o clusteringkey. Un ndice agrupado hace que SQL Server ordene
losdatos de una tabla de acuerdo con la clave de agrupamiento. Dado que la
tablanicamente puede ordenarse de una forma, nicamente podr crearse una
clavede agrupamiento por tabla.
Adems, la capa o nivel de hojas de un ndice agrupado lo constituyen lospropios
datos de la tabla. Cuando se alcanza este nivel dentro de un ndiceagrupado, SQL
Server no tiene que utilizar ningn puntero para acceder a losdatos de la tabla
puesto que ya ha llegado a los datos en s.
Ordenacin de los datos.
Uno de los errores ms comunes consiste en pensar que un ndice agrupadohace
que los datos se ordenen de forma fsica en una tabla. Pero esto no esdel todo
cierto: un ndice agrupado hace que, tanto las filas de una tabla comolas pginas de
datos de una lista doblemente vinculada que almacena losdatos de la tabla, se
ordenen en funcin de la clave de agrupamiento. Sinembargo, este orden sigue
siendo ilgico. Las filas de la tabla puedenalmacenarse en las fuentes del disco sin
ordenar. Si un ndice agrupadohiciera que los datos se ordenaran de forma fsica en
el disco, creara un nivelde actividad prohibitivo en el mismo.
Como normal general, cada tabla deber contar con un ndice agrupado, que asu
vez debera ser la clave primaria de la misma.
Seleccin de ndices agrupados.
Es posible sorprenderse de sobremanera al leer que el ndiceagrupado debe ser
tambin la clave primaria. Hemos dicho, no obstante, queesta es la norma
general, no un absoluto. Ser clave primaria no es siemprela eleccin ideal en el
caso de un ndice agrupado. Sin embargo, carecemosdel espacio suficiente para
poder explicar todas las permutaciones y factoresa la hora de seleccionar la clave
de agrupamiento perfecta, y an cuandodicho espacio existiera, terminaramos
aplicando la misma norma general que ya hemos apuntado. Agrupar la clave
primaria es siempre una opcin preferible a no tener ningn ndice agrupado.

Utilice la instruccin CREATE. . . INDEX de Transact-SQL para crear un
ndiceagrupado. La sintaxis general para este comando es la siguiente:

CREATE [ UNIQUE 1 [ CLUSTERED NONCLUSTERED J INDEX indexname
ON <object> (column t ASC DESC ) [ ,.. . n ])
[INCLUDE ( column_name [ , . . .n) ) ]
[ WITH ( <relational_index_option> ( . . . n ] ) ]
[ ON ( partition_scheme_name ( column_name )
|filegroup_name
| default
]
][ ;]

Las opciones CLUSTERED y NONCLUSTERED designan el tipo de ndice quese
crear. Despus de especificar que quiere crear un ndice agrupado, necesita dar un
nombre a dicho ndice. Todo ndiceha de tener un nombre que se ajuste a las
normas de los identificadores delobjeto.
A continuacin, utilice una clusula ON para especificar el objeto frente al cualha de
crearse el ndice. Puede crear un ndice bien en una tabla, bien en una vista.
Despus de especificar la tabla o vista frente a la que ha de crearse el ndice,
especifique entre parntesis lascolumnas sobre las que se crear el ndice. Las
palabras clave ASC y DESCespecifican si el orden ha de ser ascendente o
descendiente. Puede tambinutilizar la clusula ON para delimitar el espacio de
almacenamiento sobre el cualha de colocarse el ndice. Puede especificarse bien un
grupo de archivos o unesquema de particin para el ndice. Sino se especifica una
localizacin y la tabla o vista no est particionada, SQLServer crear el ndice en el
mismo grupo de archivos de la tabla o vista.
La siguiente parte del comando CREATE INDEX le permite delimitar las opciones de
ndices relacionales. Si bien una explicacin detallada de cada una deestas opciones
va ms all del propsito del libro, la tabla 4.1. describe las diferentes opciones
relacionales que pueden utilizarse para un ndice.

Tabla 4. Opciones de ndices relacionales.
Opcin Descripcin
PAD_INDEX Especifica el factor de relleno del ndice. Si est en ON,esta
opcin aplica el porcentaje de espacio libre especificado por la
opcin FILLFACTOR a las pginas delnivel intermedio del ndice.
Si est en OFF (opcin predeterminada) o si no se especifica
ningn FILLFACTOR,las pginas del nivel intermedio se
rellenarn hasta prcticamente el mximo de su capacidad,
dejando espacio suficiente para al menos una fila del tamao
mximoque el ndice pueda albergar.
FILLFACTOR Delimita un porcentaje (entre O y 100) que indica elnivel hasta
el cual el motor de la base de datos debellenar la capa de hojas
de cada pgina indexada durante la creacin o reconstruccin
del ndice.
SORT_IN_TEMPDB Especifica silos resultados de la ordenacin temporaldeben
almacenarse en la base de datos tempdb. Laopcin
predeterminada es OFF, lo cual significa que losresultados
intermedios se almacenan en la misma basede datos que el
ndice.
IGNORE_DUP_KEY Especifica la respuesta de error a los valores de clavede
duplicado en una operacin de insercin de filasmltiples sobre
un ndice nico agrupado o no agrupado. La opcin
predeterminada es OFF, lo que significaque se produce un
mensaje de error y la transaccinINSERT es devuelta al principio
en su totalidad.Cuando la opcin elegida es ON, se emite un
mensajede aviso, y solamente aquellas filas que violen el ndice
nico darn un mensaje de error.
STATISTICS_ NO Especifica si las estadsticas de la distribucin secomputarn s
Si la opcin es OFF, la actualizacin predeterminada yutomtica
de las estadsticas queda abilitada. Si es ON, las
estadsticasfuerade fecha no se computan de nuevo.
DROP_EXISTING Si la opcin activada es ON, se especifica que el
ndicenombrado y preexistente, bien sea agrupado o no
agrupado, se elimine y sea reconstruido. La opcin
predeterminada es OFF.
ONLINE Si la opcin activada es ON, especifica que las tablas
endices asociados estn disponibles para consultas
ymodificacin de datos durante la operacin de
indexado.La opcin predeterminada es OFF.
ALLOW_ROW_LOCKS Si la opcin activada es ON (opcin predeterminada)
sepermiten los bloqueos de fila.
ALLOW_PAGE_LOCKS Si la opcin activada es ON (opcin predeterminada)
sepermiten los bloqueos de pgina.
MAXDOP Reemplaza la opcin de configuracin maxdegree
ofparallelism solamente durante la duracin de la
operacin. MAXDOP limita el nmero de procesadores
quepueden utilizarse en la ejecucin de un plan en
paralelo, hasta un mximo de 64 procesadores (la
ejecucinde ndices en paralelo nicamente es posible en
SQLServer 2012 Enterprise Edition).
De todas estas opciones, examinaremos con mayor detalle la opcin ONLINE. Tal y
como se seala en la tabla, esta opcinpermite especificar si SQL Server debe crear
ndices en lnea o fuera de lnea. Laopcin por defecto es ONLINE OFF. Si un ndice
agrupado se construye offline,SQL Server bloquea la tabla y los usuarios no pueden
seleccionar ni modificarlos datos. Silo que se construye offline es un ndice no
agrupado, entonces SQLServer adquiere un bloqueo de tabla compartido, que
permite declaracionesSELECT pero no la modificacin de los datos.
Cuando se especifica la opcin ONLINE ON durante la creacin del ndice,
lasconsultas SELECT y las declaraciones de modificacin de datos pueden acceder a
la tabla o vista subyacentes. Cuando SQL Server crea un ndice en lnea, utilizala
funcionalidad de versin de filas para asegurar que el ndice pueda construirse sin
entrar en conflicto con otras operaciones de la tabla. La creacin de ndices online
est nicamente disponible en la versin de SQL Server 2012 EnterpriseEdition.



Deshabilitar un ndice.
Puede deshabilitar un ndice utilizando la declaracin ALTER INDEX deTransact-SQL:
ALTER INDEX { index_name| ALL }
ON <object>
DISABLE [ ; ]
Al deshabilitar un ndice, la definicin del mismo permanece en el catlogodel
sistema, pero SQL Server deja de utilizarla. SQL Server no mantiene elndice en
forma de datos en los cambios de tabla, y el ndice no puede serutilizado en
consultas. Si se deshabilita un ndice agrupado, toda la tabla esinaccesible.
Para volver a habilitar un ndice, deber primero eliminarlo y
posteriormenterecrearlo para regenerar y repoblar la estructura del rbol-B. Puede
hacerlo mediante la instruccin ALTER INDEX utilizando la clusula REBUILD:
ALTER INDEX {index_name| ALL }
ON <object>
REBUILD[ ; ]














Prctica: Crear un ndice agrupado.

Esta prctica le ayudar a crear un ndice agrupado. Posteriormente lodeshabilitar
y volver a rehabilitarlo.

1. Inicie SSMS, conecte con su instancia(con su usuario administrador) y abra una
nueva ventana de consulta.

2. Cambie el contexto a la base de datos AdventureWorks.

3. Cree un ndice agrupado en la columna PostTime de la tabla
DatabaseLogmediante la ejecucin del siguiente comando:

CREATE CLUSTERED INDEX ci_postdate

ON dbo.DatabaseLog(PostTime);

4.Ejecute la siguiente consulta para verificar que los datos pueden serextrados de
la tabla:

SELECT * fromdbo.DatabaseLog;

5. Deshabilite el ndice ejecutando la siguiente instruccin:

ALTER INDEX ci_postdate ON dbo.DatabaseLog DISABLE;

6. Verifique que no se puede acceder a la tabla:

SELECT * fromdbo.DatabaseLog;

7. Vuelva a habilitar el ndice agrupado y verifique que tiene acceso a la tabla
mediante la instruccin:

ALTER INDEX ci_postdate ON dbo.DatabaseLog REBUILD;

GO

SELECT * from dbo.DatabaseLog;





Tema 7: Crear ndicesno agrupados.

Despus de construir un ndice agrupado, puede crear ndices no agrupados enla
misma tabla. Frente a los ndices agrupados, un ndice no agrupado no exigeun
orden determinado de los datos de la tabla. Adems, puede crear mltiplesndices
no agrupados para conseguir una devolucin de resultados ms eficazbasada en los
tipos de consulta ms frecuentes que puede ejecutar en la base dedatos. En esta
leccin, aprender a crear ndices no agrupados, as como a construir un ndice
cubierto que pueda satisfacer una consulta por s mismo. Tambin aprender la
importancia de equilibrar el nmero de ndices creados con elgasto en recursos que
requiere su mantenimiento.

Implementar un ndice no agrupado.

Dado que un ndice no agrupado no impone ningn tipo de orden dentro deuna
tabla, es posible crear hasta 249 ndices de este tipo en una sola tabla. Losndices
no agrupados, al igual que los agrupados, crean una estructura derbol-B. Sin
embargo, frente a los ndices agrupados, la capa de hojas delndice en un ndice no
agrupado contiene un puntero hacia los datos en lugarde los datos en s.

El puntero puede hacer referencia a uno de dos elementos: si la tabla tiene un
ndice agrupado, el puntero apuntar hacia la clave de ndice agrupada. Si por el
contrario la tabla carece de un ndice agrupado, el punto apunta a un identificador
relativo (RID), que es una referencia a la localizacin fsica de los datos dentrode la
pgina de datos.
Cuando el puntero hace referencia a un ndice no agrupado, la consulta transitaa
travs de la estructura de rbol-B del ndice. Cuando la consulta lleva a la capade
hojas, utiliza el puntero para encontrar la clave de agrupamiento. Entonces,la
consulta recorre el ndice agrupado para llegar a la fila de datos. Si no existeun
ndice agrupado en la tabla, el puntero devuelve un RID, que hace que SQLServer
explore un mapa de locacin interno para localizar la pgina referenciadapor el RID
para poder as devolver los datos solicitados.
Puede utilizar la instruccin CREATE. . . INDEX para crear un ndice no agrupado, al
igual que se hace para crear un ndice agrupado, con la salvedad de quehabr de
especificar la palabra NONCLUSTERED.

Crear un ndice cubierto.
Un ndice contiene todos los valores de una columna o columnas que lo definen.
SQL Server almacena estos datos de forma ordenada en pginas medianteuna lista
doblemente enlazada, de manera que un ndice es, en lo esencial,
unarepresentacin en miniatura de una tabla.
Esta estructura puede tener efectos interesantes sobre algunas consultas. Si
laconsulta necesita devolver datos nicamente de columnas con ndice, no necesita
acceder directamente a las pginas de datos en s. Transitando el ndice,
puedelocalizar todos los datos necesarios.
Por ejemplo, imaginemos que est utilizando la tabla Customerde Adventureworks
para encontrar los nombres de todos los clientes que tienen una lnea de crdito de
ms de 10,000 euros. SQL Server explorara la tabla para localizartodas las filas
con un valor mayor de 10,000 en la columna CreditLine, lo cualresultara altamente
ineficaz. Si creramos un ndice en la columna CreditLine,SQL utilizara el ndice
para localizar todas las filas que se ajustaran a este criterio de bsqueda.
Posteriormente, transitara por la clave primaria, porque estagrupada, para
devolver los nombres de los clientes. Sin embargo, si cresemosun ndice no
agrupado con dos columnas (Credit Line y CustomerName), SQLServer no tendra
acceso al ndice agrupado para localizar las filas de datos. Alutilizar el ndice no
agrupado para localizar todas las filas en las que la lnea decrdito fuera superior a
10,000 euros, SQL Server localizara tambin los nombres de los clientes.
Los ndices que SQL Server utiliza para realizar una consulta sin acceder a latabla
se denominan ndices cubiertos.
De forma an ms interesante, SQL Server puede utilizar ms de un ndice parauna
determinada consulta. En el ejemplo anterior, podamos crear ndices noagrupados
en la lnea de crdito y el nombre de cliente, que SQL Server utilizadespus
conjuntamente para realizar la consulta.
Seleccin del ndice
SQL Server determina si debe utilizar un ndice examinando nicamente laprimera
columna definida en el mismo. Por ejemplo, si definimos un ndice enFirstName,
LastName y una consulta estuviera buscando en el campoLastName, este ndice no
se utilizara para ejecutar la consulta.


Equilibrar el mantenimiento del ndice.
Por qu no, entonces, crear docenas o incluso cientos de ndices en una tabla?A
primera vista, y sabiendo lo tiles que pueden llegar a resultar los ndices, no
parece una mala idea. Sin embargo, recuerde que un ndice se construye.
Losvalores de la columna sobre la que se construye el ndice son los utilizados
paraconstruirlo. Y los valores dentro del propio ndice son, a su vez, organizados
enun orden determinado. Supongamos que se aade una nueva fila a la tabla:
antesde que la operacin llegue a su fin, el valor de esta nueva fila debe afladirse a
lalocalizacin correcta dentro del propio ndice.
Si solamente tenemos un ndice en la tabla, una operacin de escritura en lamisma
crear tambin una operacin de escritura en el ndice. Si el nmero dendices es
30, las operaciones de escritura en la tabla ocasionarn igualmente 30operaciones
de escritura en el indice.
Pero esto no es todo: si una pgina de ndice en la capa de hojas no tiene
espaciopara el nuevo valor, SQL Server tiene que llevar a cabo una operacin
denominada ruptura de pagina o page split. Durante esta operacin, SQL Server
designauna pgina vaca al ndice y traslada la mitad de los valores de la pgina
que se hallenado a la nueva pgina. Si la ruptura de pgina hace que una de las
pginas deindexado del nivel intermedio se desborde, se producir una nueva
rupturatambin a ese nivel. Y si la nueva fila hace que la pgina raz se desborde,
SQLServer romper la pgina raz en un nuevo nivel intermedio, con lo cual
secrear una nueva pgina raz.

Como puede verse, los ndices pueden mejorar el rendimiento en las consultas,pero
cada ndice que se crea degrada el rendimiento de todas las operaciones
demanipulacin de datos. En consecuencia, deber considerar cuidadosamente
elnmero de ndices que debe crear para que las operaciones se desarrollen
deforma ptima. Como norma de aplicacin general, si tiene cinco o ms ndicesen
una tabla diseada para operaciones de tipo OLTP, probablemente
necesitereevaluar por qu existen esos ndices. Las tablas diseadas para consultas
relacionadas con operaciones de lectura o almacenamiento masivo de datos
tienenpor lo general 10 o ms ndices porque no hemos de preocuparnos por el
impacto de los mismos en las operaciones de escritura.
Cundo utilizar columnas incluidas.
Adems de tener en cuenta la degradacin del rendimiento ocasionada por
lasoperaciones de escritura, habr de considerar que los ndices tienen un
lmitemximo de 900 bytes. Este lmite puede llegar a constituir todo un reto a la
horade construir ndices cubiertos ms complejos.
Una de lascaractersticas de indexado de SQL Server 2012, las columnasincluidas,
permite hacer frente a este reto. Las columnas incluidas forman partedel ndice
nicamente en el nivel de hoja del mismo. Los valores de las columnas incluidas no
aparecen en los niveles raz o intermedio del ndice y no afectana la limitacin de
tamao de 900 bytes para el ndice.

Prctica: Crear ndices no agrupados.

En esta prctica, aadir un ndice no agrupado a algunas tablas.
1. Inicie SSMS, conecte con su instancia y abra una nueva consulta.
2. Dado que la mayora de usuarios buscan a unapersona por el campo
ciudad,aada un ndice no agrupado a la tablaAddress en la columnaCity, como se
muestra a continuacin:
CREATE NONCLUSTERED INDEX idx_CustomerAddress_City ON
Person.Address (City);











Tema 8:Crearparticiones.
Una de las funcionalidades de Microsoft SQL Server 2012son las particiones. Las
particiones permiten dividir una tabla en mltiples unidades de almacenamiento
llamadas grupos de archivo, basndose en las especificaciones dadas por el usuario.
Desde SQL Server 7.0, los administradores debases de datos han sido capaces de
separar tablas e incluso ndices en grupos dearchivo especficos, de modo que, qu
tienen de especial las particiones?
Mediante las particiones, es posible colocar un subconjunto de una tabla o unndice
en un grupo de archivos especfico. Esto permite separar partes especficas de una
tabla o ndice en grupos de archivo individuales y administrar deforma efectiva el
flujo de input/output (I/O) de las tablas voltiles. Adems, ydado que las
organizaciones cada da almacenan ms y ms datos duranteperiodos ms largos
de tiempo para poder analizarlos con posterioridad, lastablas son cada vez ms
grandes. Administrar tablas de tamao masivo puederesultar una tarea muy
compleja. Las particiones, no obstante, permiten lasegregacin de datos dentro de
una tabla basada en la antigedad de los datos,lo que permite a su vez realizar
copias de seguridad de un subconjunto especfico dentro de la tabla. La razn ms
importante para utilizar particiones esque permiten administrar con facilidad las
rutinas de archivo y operaciones decarga de datos.

Caso de uso :Mundo real (Michael Hotek)

Un da, recib un mensaje instantneo de uno delos educadores de nuestra
compaa, Solid QualityLearning, que estabatrabajando con un cliente en una
operacin de almacenamiento masivo dedatos y se encontraba con problemas a la
hora de realizar operaciones decarga de datos habituales.

La tabla contena millones de filas de datos. Cada da, las operaciones cargaban los
conjuntos de datos ms recientes en la tabla y eliminaban los datos dems de 90
das de antigedad. Debido a que cada operacin implicaba utilizar cientos de miles
y millones de filas, cada operacin resultaba compleja, peropoda ser resuelta
utilizando procesos normales de insercin y borrado.

El principal reto lo constitua el hecho de que la tabla tena un gran nmero
dendices. El cliente no poda eliminar los ndices para la operacin de insercinde
datos porque recrearlos habra supuesto que la base de datos permanecera
inactiva durante varias horas (la compaa tampoco conoca la opcinONLINE para
crear ndices). Cargar los datos en la tabla con los ndices enfuncionamiento exiga
varias horas, y gran parte de ese tiempo se dedicaba almantenimiento de los
mismos ndices que causaban el bloqueo de la operacin. El archivo de datos con
ms de 90 das de antigedad daba lugar aproblemas similares.
Afortunadamente, SQL Server 2012 ofrece un modo de cargar todos estosdatos en
la tabla sin incurrir en ningn consumo de tiempo y recursos excesivo durante el
mantenimiento de los ndices, y que permite adems construirde forma incremental
la porcin del ndice relativa a los nuevos datos introducidos.
SQL Server 2012 presenta la funcin particin de tablas. El usode esta
caracterstica, independiente del nmero de filas a insertar,permiti a la compaa
aadir datos a la tabla operativa en menos de unsegundo, sin necesidad de que los
ndices fueran reconstruidos y sin ocasionar ningn problema. El mismo proceso
pudo ser aplicado al archivo de datos, lo cual permiti a la compaa eliminar tantas
filas como quisiera enmenos de un segundo sin que los ndices tuvieran que ser
reconstruidos.
Las particiones y SQL Server Management Studio(SSMS).
Las particiones son una de las nuevas caractersticas de SQL Server 2012que
carecen de una interfaz grfica de usuario en SSMS. Deber realizartodas las
operaciones relativas a las particiones escribiendo cdigo.

Cmocrear una funcinde particin.
Una funcin de particin es un objeto independiente de la base de datos quedefine
los lmites a la hora de particionar los datos. La creacin de una funcinde particin
es el primer paso a la hora de particionar una tabla, un ndice, o unavista indizada.
Estos son los nicos objetos que pueden particionarse, puestoque son los nicos
que pueden almacenar datos en la base de datos.
Para crear una funcin de particin, utilice la instruccin de Transact-SQLCREATE
PARTITION FUNCTION. La sintaxis general es como se muestra acontinuacin:
CREATE PARTITION FUNCTIONpartition_function_name( input_parameter_type)
AS RANGE [ LEFT| RIGHT ]
FOR VALUES ( [boundary_value [ , . . . n ] ] ) [ ; ]
En primer lugar, d un nombre a la particin que se adece a las normas
deidentificador de objetos. Despus, especifique un tipo de datos para los
parmetrosde entrada. Puede utilizar cualquier tipo de datos excepto text,
ntext,varchar(max), image, xml, timestamp, nvarchar(max),varbinary (max), tipos
definidos por el usuario de Transact-SQL, y tipos dedatos para CLR.
SQL Server 2012 nicamente permite crear funciones de rango. En la clusulade la
instruccin RANGE, deber especificar un valor RIGHT o LEFT para especificar a qu
particin pertenece el valor de lmite de la misma. En la clusulaVALUES, deber
especificar la lista de los valores lmite para la funcin de particin. Examine con
detenimiento el siguiente ejemplo para entender el funcionamiento de esta
instruccin:
CREATE PARTITION FUNCTION partfunc (int) AS
RANGE LEFT FOR VALUES (1000, 2000, 3000, 4000, 5000) ;

Esta instruccin crea una funcin de particin llamada partfunc que se aplicaa
valores de datos de tipo integer. Esto quiere decir que no puede aplicar lafuncin a
columnas que, o bien no estn definidas como tipo de datos integer,o que no hayan
sido implcitamente convertidas a este tipo de datos.
La clusula RANGE LEFT del ejemplo especifica que cada punto delimitadordefinido
para la funcin reside en la particin izquierda. La clusula VALUESdefine los puntos
de lmite de las particiones. Una funcin de particin sealasiempre el rango
completo de valores permitidos, de manera que todos los valores posibles estn
siempre definidos para una particin especfica. La funcin departicin partfunc
define seis particiones, tal y como muestra la tabla 6.1.

Tabla 5. Las seis particiones de la funcin de particin partfunc.
ID de particin Rango de valores
1 -infinito a 1,000
2 1,001 a 2,000
3 2,001 a 3,000
4 3,001 a 4,000
5 4,001 a 5,000
6 5,001 a +infinito

Si ha definido la funcin de particin como RANGE RIGHT en lugar de RANGELEFT,
los valores se corresponden con los mostrados en la tabla 6.
Tabla 6. Valores de la particin si la funcin de particin se define como
RANGERIGHT.
ID de particin Rango de valores
1 -infinito a 999
2 1,000a 1,999
3 2,000a2,999
4 3,000a3,999
5 4,000a4,999
6 5,000 a +infinito

Ntese que una funcin de particin:
No especifica una tabla, ndice o vista indizada.
No especifica un grupo de archivos.
No referencia datos fsicos de ninguna clase.
El esquema de particin y la declaracin de creacin de tablas o ndices utilizanun
objeto independiente de la base de datos para implementar la particin.

Prctica: Crear una funcin de particin.

En esta prctica, aprender a crear una funcin de particin que podr utilizaren las
prcticas siguientes. Para simplificar esta tarea, utilizaremos una base dedatos de
prueba.
1. Inicie SSMS, conecte con su instancia y abra una nueva ventana de consulta.
2. Si an no ha creado un directorio llamado C:\AdSQL\test, crelo ahora.
3. Cree una nueva base de datos llamada partitiontest con la siguientesintaxis:

USE master
GO
CREATE DATABASE partitiontest
ON PRIMARY
( NAME = db_dat,
FILENAME = ' c:\AdSql\test\db.mdf' ,
SIZE= 3MB),
FILEGROUP FG1
( NAME= FG1_dat,
FILENAME = 'c:\AdSql\test\FG1.ndf' ,
SIZE = 2MB),
FILEGROUP FG2
( NAME = FG2_dat,
FILENAME 'c:\AdSql\test\FG2.ndf' ,
SIZE = 2MB),
FILEGROUP FG3
( NAME = FG3_dat,
FILENAME='c:\AdSql\test\FG3.ndf' ,
SIZE = 2MB),
FILEGROUP FG4
( NAME = FG4_dat,
FILENAME = 'c:\AdSql\test\FG4.ndf' ,
SIZE = 2MB)
LOG ON
( NAME = db_log,
FILENAME = 'c:\AdSql\test\log.ndf' ,
SIZE = 2MB,
FILEGROWTH = 10% );
GO
USE partitiontest
GO
4. Cree una funcin de particin con la siguiente instruccin:
CREATE PARTITION FUNCTION partfunc (int) AS
RANGE LEFT FOR VALUES (1000, 2000)
GO
5. Compruebe los resultados de ejecutar esta instruccin mediante la ejecucinde la
siguiente consulta:
SELECT * FROM sys.partition_range_values;
















Tema 9: Crearun esquemade particin.

El segundo paso a la hora de particionar una tabla, ndice o vista indizada consiste
en crear un esquema de particin. Un esquema de particin define lasestructuras
fsicas de almacenamiento, o grupos de archivo, que se utilizarn enuna funcin de
particin concreta.
Cmo crear un esquema de particin.

Puede utilizar la instruccin de Transact-SQL CREATE PARTITION SCHEMEpara
crear un esquema de particin. La sintaxis general para este tipo de instruccin se
muestra a continuacin:

CREATE PARTITION SCHEME partition_scheme name

AS PARTITION partitionfuncion name

TO ( { file_group_name I ( PRIMARY ] ) } [ , .. . n ] ) [ ; ]

Empezaremos dando un nombre al esquema de la particin siguiendo las reglas
de identificadores de objetos. Posteriormente utilizaremos la instruccinPARTITION
para especificar el nombre de la funcin de particin que se vincular a este
esquema.

En la clusula TO de la instruccin, especificaremos la lista de grupos de archivo
que definen el almacenamiento en disco para cualquier dato que utilicemos en el
esquema de particin. Cualquier grupo de archivos que especifiquemos en esta
clusula tendr que haber sido aadido con anterioridad a la base de datos,deber
tener al menos un archivo asignado al mismo, y no podr estar marcadocomo de
slo lectura.

El siguiente ejemplo muestra cmo utilizar la instruccin para crear un esquemade
particin llamado partscheme:
CREATE PARTITION SCHEME part scheme AS
PARTITION partfunc TO
([FG1], [F02], (F03], (FG4], [FG5], [FG6])
GO
Fijese en que an no hemos especificado una tabla, vista, o vista indizada
nireferencia a ningn otro objeto de la base de datos, a excepcin de la funcin
departicin. Un esquema de particin simplemente especifica un nombre para
unaestructura fsica de almacenamiento.
Cmo funciona este esquema de particin con la funcin de particin estudiada
anteriormente? Recuerde que la funcin de particin partfunc tena seisparticiones.
Basndose en la definicin del esquema de particin, SQL Serveralmacena todos los
valores que residan en la Particin 1 en FG1, los valores de laparticin 2 en FG2, y
as sucesivamente. De manera que mediante un diseocuidadoso de las funciones y
esquemas de particin, podremos determinar conexactitud qu conjunto de datos
dentro de una tabla, ndice o vista indizadahabr de residir dentro de un grupo de
archivos concreto.

Prctica: Crear un esquema de particin.
1. Inicie SSMS, conecte con su instancia y abra una nueva ventana de consulta.
2. Cree un esquema de particin mediante la ejecucin de la siguiente instruccin:
USE partitiontest
CREATE PARTITION SCHEME partscheme AS

PARTITION partfunc TO

([FG1], [FG2] , [FG3]) ;

3.Vea los resultados mediante la ejecucin de la siguiente consulta:

SELECT * FROM sys.partition_schemes;






Tema 10:Particionar tablase ndices.
Despus de crear una funcin de particin y un esquema de particin,
estamospreparados para particionar una tabla, un ndice o una vista indexada.
Crear una tabla, ndice o vista indizadaparticionada.
Para crear una tabla o ndice particionado, deber utilizar la misma
sintaxisempleada en la creacin de tablas e ndices. Particionar una vista indizada
consiste simplemente en particionar el ndice de la vista. La instruccin de
Transact-SQL CREATE TABLE es como sigue:
CREATE TABLE
[ database name . [ schema_name ] . [ schema name . ] table name
( {<column definition> |<computed column definition> }
[ <table constraint> ] [ , . . .n ] )
[ ON { partition_scheme name ( partition_column name ) |filegroup
| default } ]
[ {TEXTIMAGEON { filegroup | default } ] [ ; ]

A su vez, la sintaxis general para la instruccin de Transaqt-SQL CREATEINDEX es:

CREATE [ UNIQUE ] ( CLUSTERED | NONCLUSTERED J INDEX index_name
ON <object>( column [ ASC | DESC ] [ , . . . 3 ])
[ INCLUDE ( column_name[ . . n ] ) ]
[ WITH ( <relational_index_option> [ , . . . n ] ) ]
[ ON { partition_scheme_name ( column_name )
| filegroup_name|default ) ] [ ; ]

La clusula ms importante para la particin en cada instruccin es ON.
Paraparticionar una tabla o ndice, en lugar de especificar un grupo de archivos
paradicha clusula, deber particionar un esquema de particin.
El siguiente ejemplo de cdigo muestra las declaraciones CREATE
PARTITIONFUNCTION, CREATE PARTITION SCHEME y CREATE TABLE que
utilizaramos para particionar la tabla CustomerAddress:

CREATE PARTITION FUNCTION partfunc (int) AS
RANGE LEFT FOR VALUES (1000, 2000, 3000, 4000, 5000);
GO
CREATE PARTITION SCHEME partscheme AS
PARTITION partfunc TO
([FG1] , [FG2] , [FG3] , [FG4) , [FG5) , [FG6])
GO
CREATE TABLE dbo.Customer Address
(CustomerAddresslDintIDENTITY(1,1) PRIMARY KEY CLUSTERED
AddressTypeIDtinyint NOT NULL,
PrimaryAddressFlag bit NOT NULL,
AddressLine1varchar(30) NOT NULL,
AddressLine2 varchar(30) NULL,
AddressLine3 varchar(30) NULL,
City varchar(50) NOT NULL,
StateProvinceIDint NULL,
PostalCodechar(10) NULL,
ON partscheme(CustomerAddressID);


Este ejemplo...:
... crea una funcin de particin llamada partfunc.
... crea un esquema de particin llamado partscheme.
... crea la tabla dbo.CustomerAddress con la definicin especificada.
... almacena la tabla en el esquema de particin partscheme.
.... utiliza la columna CustomerAddresslD de la tabla para decidir qu filasde
la tabla empiezan dentro de una particin dada.
A medida que se van aadiendo datos a la tabla, cualquier fila con
unCustomerAddressID de 1,000 o menos entrar dentro de la particin 1 y
sealmacenar en FG1, las direcciones con un ID de entre 1,001 y 2,000 en
laparticin 2 y as sucesivamente.

Indices particionados y columnasincluidas.
El siguiente ejemplo muestra cmo crear un ndice particionado en la mismatabla:
CREATE NONCLUSTERED INDEX idx_CustomerAddress_City ON
dbo. CustomerAddress (City)
ON partscheme (CustomerAddressID);

Lo interesante de la sintaxis anterior es que el ndice est definido en la
columnaCity. Sin embargo, el ndice est particionado en la columna
CustomerAddressID,que no existe en la definicin del ndice. La particin aprovecha
las caractersticas de las columnas incluidas estudiadas anteriormente. Mediante las
columnasincluidas, cualquier columna que forma parte del ndice agrupado
esautomticamente migrada a un ndice creado en esa tabla. Esto nos
permiteparticionar los ndices igual que se particiona la tabla. Mas adelante
veremos porqu esto es importante.
Al crear este ndice, SQL Server almacena la porcin del ndice que se corresponde
con un CustomerAddressID igual a o menor de 1,000 en FG1, almacena la porcin
que va de 1,001 a 2,000 en FG2 y as sucesivamente.



Particionar una tabla o ndice ya existentes.
Es posible particionar un ndice o una tabla ya existentes sin tener que eliminarlos y
volverlos a crear. En lugar de esto, si eliminamos un ndice agrupado y serecrea en
otro grupo de archivos, SQL Server mueve todos los contenidos de unatabla al
mismo grupo de archivos en el que est el ndice agrupado.Podemos utilizar este
proceso para particionar una tabla o un ndice que yaexisten mediante el siguiente
procedimiento:
1. Crear una funcin de particin.
2. Crear un esquema de particin
3. Eliminar el ndice agrupado existente.
4. Recrear el ndice agrupado sobre el esquema de la particin.

Mediante este proceso, la tabla se particiona de forma automtica segn el
esquema de particin en el que est alojado el ndice, utilizando la funcin
departicin vinculada a dicho esquema. La clave de agrupamiento se migra deforma
automtica a cada uno de los ndices no agrupados como columna incluida, y cada
uno de los ndices no agrupados se particionan de igual forma a comolo hace la
tabla.
Los ndices no agrupados pueden particionarse utilizando una funcin y esquema de
particin diferentes a los utilizados para la tabla. Sin embargo, esto nopuede
hacerse con un ndice agrupado.

Prctica: Crear una tabla particionada.
En esta prctica crearemos una tabla de particiones sobre el mismo esquema
departicin creado anteriormente.
1. Inicie SSMS, conecte con la instancia, abra una nueva ventana de consultas
ycambie el contexto a la base de datos partitiontest.
2. Cree una tabla de prueba de particin mediante la ejecucin del siguientecdigo,
que especifica el esquema de particin partscheme en la clusula ON:


USE PARTITIONTEST
CREATE TABLE dbo.t1 (
id INT
, vCHAR(1000) DEFAULT'aaaa'
CONSTRAINT ci_ti_id PRIMARY KEY CLUSTERED (id))
ON partscheme(id);
3. Puede ver los resultados ejecutando la siguiente consulta:
SELECT * FROM sys.partitionsWHERE object_id = OBJECT_ID('dbo.t1');
4. A continuacin, aada algunas filas de datos a la tabla mediante el siguiente
lote:
SET NOCOUNT ON
DECLARE @i INT
SET @i=10
WHILE @i<=3000
BEGIN
INSERT dbo.t1(id) SELECT @i
SET @i= @i +10
END
GO
5. Compruebe los datos en la tabla ejecutando la siguiente consulta:
SELECT * from dbo.t1
6. Comprueba el estado de las particiones mediante la siguiente consulta:
SELECT * FROM sys.partitions
WHERE object_id = OBJECT_ID('dbo.t1')



Tema 11: Ejecutarconsultas sobrelas
particiones.

Una de las caractersticas ms interesantes de las particiones es que es un proceso
que permanece totalmente oculto para el desarrollador. Los datos de unatabla se
recuperan y modifican exactamente igual tanto en tablas particionadascomo no
particionadas. Sin embargo, podemos ejecutar una consulta sobre loselementos
internos de una particin para determinar sus elementos estructurales o para
restringir un conjunto de resultados a una particin concreta. Estaleccin le
mostrar cmo utilizar la funcin $ PARTITION para determinar elnmero de
particin que le correspondera a un valor determinado, o restringiruna consulta a
una particin concreta.


Cmo ejecutar consultas sobre particiones.

Puede ejecutar consultas sobre particiones utilizando la funcin
especial$PARTITION. La sintaxis general para esta funcin es:


[ database_name. ] $PARTITION.partition_function_name(expression)

La funcin $PARTITION devuelve un nmero de particin basado en los valores de
la columna para una funcin de la particin determinada. Los usos mscomunes
para esta funcin son:



Determinar el nmero de particin que correspondera a un
determinadovalor.
Limitar una consulta a una particin especfica.

La siguiente consulta SELECT muestra cmo utilizar la funcin $PARTITIONpara
determinar el nmero de particin para un valor determinado:
SELECT $partition.partfunc (2784) as [PartitionNum];

El siguiente cdigo muestra cmo utilizar $PARTITION para restringir unaconsulta a
una particin especfica, en este caso, a la particin nmero 3:
SELECT * FROM dbo.CustomerAddress
WHERE $partition.partfunc (CustomerAddressID) = 3

Prctica: Ejecutar consultas sobreuna particin.
En esta prctica utilizaremos la funcin $PARTITION para que nos devuelva
elnmero de la particin para un valor determinado, el nmero de filas en
cadaparticin con datos y todas las filas dentro de una particin concreta.
1. Abra SSMS, conecte con su instancia, abra una nueva ventana de consultas
ycambie el contexto a la base de datos partitiontest.
2. Obtenga el nmero de filas para cada particin mediante la siguiente consulta:
SELECT $partition.partfunc(id) AS [PartitionNum], count (*) [NumRows]
FROM dbo.t1 GROUP BY $partition.partfunc(id)
ORDER BY $partition.partfunc(id);
3. Averigue el nmero de particin al que correspondera el valor 4,000 mediante la
siguiente consulta:
SELECT $partition.partfunc(4000) as [PartitionNum];
4. Devuelva todas las filas en la particin nmero 2 ejecutando la
siguienteconsulta:
SELECT * FROM dbo.t1
WHERE $partition.partfunc (id) =2
5. A continuacin, aada datos a la tabla y observe los resultados ejecutando
elsiguiente lote:
SET NOCOUNT ON
DECLARE @i INT, @max INT
SELECT @max=MAX(id) + 10 FROM dbo.t1
SET @i= @max
WHILE @i<= @max + 3000 - 10
BEGIN
INSERT dbo.t1 (id) SELECT @i
SET @i=@i*10
END
GO
--Cul es la distribucin de datos en la tabla ahora?
SELECT $partition.partfunc(id) AS [PartitionNum], count (*) [NumRows]
FROM dbo.t1 GROUP BY $partition.partfunc(id)
ORDER BY $partition.partfunc(id)
GO

Distribucin uniforme de los datos
SQL Server no distribuye los datos de forma uniforme entre las particiones.La
distribucin uniforme de datos en los ejemplos iniciales result ser unacoincidencia
debida al modo de insercin de los mismos. Los datos separticionan nicamente en
los puntos delimitadores. Si una particin determinada contiene ms datos que
otra, es porque un nmero mayor de sus filascoincide con el rango definido por la
particin. Si desea equilibrar la distribucin de datos entre las particiones, deber
hacerlo de forma manual.





Tema 12: Hacer copiasde seguridad.

Una de las tareas ms importantes que debe realizar cualquier administrador de
una base de datos consiste en mantener al menos una copia de una base de datos
operativa en caso de que ocurra algn desastre. El hecho de que la creacin de una
copia de seguridad sea una operacin frecuente no debe restarle importancia. Este
captulo explica la importancia de las copias de seguridad de la base de datos para
nuestra estrategia de recuperacin. Una estrategia de recuperacin define el modo
de recuperacin de la base de datos, al tiempo que cumple con las reglas de
negociorelativas al tiempo que la base de datos puede estar no operativa y el nivel
mximode prdida de datos aceptable. La tarea de hacer una copia de seguridad de
la basede datos carece de sentido si no contamos con dicha estrategia. Este
captulo describe las diferentes opciones que Microsoft SQL Server ofrece para
hacer copias deseguridad de la base de datos. Se explica tambin cmo restaurar
las copias deseguridad para recuperar datos hasta un punto determinado en el
tiempo, y aprenderemos a trasladar bases de datos mediante las opciones copia de
seguridad/restaurar, separar/adjuntar o el Asistente para copia de la base de datos.

Herramientas de restauracin y copia de seguridaden
SSMS.

Si bien es posible acceder a la mayor parte de ellas a travs de la interfazgrfica de
SQL Server Management Studio (SSMS), lo cierto es que lasexplicaciones en
pantalla no resultan muy tiles a la hora de comprender el funcionamiento de estas
operaciones. Adems, algunas opciones y procesos de restauracin no se pueden
realizar mediante la interfaz grfica de usuario (GUI).

Caso de uso :Mundo real2 (Michael Hotek).
En cierta ocasin, mientras me dispona a tomarme unos das de vacaciones,recib
una llamada de un cliente desesperado. La organizacin para la quetrabajaba se
enfrentaba a un problema de difcil solucin: uno de tos discoshaba fallado y la
persona encargada de instalar la nueva unidad haba elegidola unidad incorrecta. El
sistema al completo dej de funcionar y era imposiblerecuperar el conjunto de
discos (RAID) de la instalacin. La organizacin creaque yo era la nica persona
capaz de solucionar el problema, dado que durante casi dos dcadas me ha
dedicado a la recuperacin de desastres en cientos de compaas y organizaciones
de todo el mundo con bastante xito. Lamayor parte de tos proyectos en los que he
trabajado implicaban la recuperacin de sistemas de produccin que yo no haba
visto con anterioridad. Losdaos tenan frecuentemente su origen en las causas
ms variadas que puedan imaginarse: inundaciones, incendios, tornados,
huracanes, tsunamis, rayos, terremotos, inmersin en agua, explosivos, balas,
cualquier fallo dehardware imaginable, violaciones de la seguridad y evidentemente
errores delos usuarios.
Tras entrar en la red virtual privada (VPN) del sistema y mantener varias
reuniones, conseguimos reconstruir todo el sistema mediante una combinacinde
copias de seguridad, extracciones de datos a otros sistemas y la utilizacin del
producto de Lumigent Technologies, Log Explorer. Fuimos incapacesde recuperar
una pequea cantidad de datos daados durante una operacinde recuperacin
fallida, pero la organizacin pudo reconstruir los datos manualmente.
Justo cuando estaba terminando mi trabajo, recib un correo electrnico solicitando
mi ayuda desde otra organizacin. Su proveedor haba quemado el discoy con l
todos los datos. Tampoco exista, como es de suponer, ninguna copiade seguridad
de la base de datos. As que volv a hacerme la misma preguntade siempre:
cundo aprendern? La parte ms importante de la implementacinde una base de
datos es, sin duda alguna, contar con una estrategia de copias de seguridad y
restauracin funcional y que haya sido probada, y poner esa estrategia en
funcionamiento. Afortunadamente, no recibo llamadas de este tipo a diario, pero
ciertamente, me habra gustado poder disfrutar de un da de descanso lejos de un
ordenador...

Crear una copiade la base de datos.

Uno de los aspectos crticos en el mantenimiento de una base de datos esmantener
un duplicado de los datos que podamos recuperar en caso de questos se pierdan.
SQL Server 2012 ofrece una serie de caractersticas que nospermiten llevar a cabo
estas tareas. El mtodo ms comn a la hora de mantener copias duplicadas de los
datos consiste en utilizar las funciones de copiade seguridad de SQL Server.
Algunas de ellas resultarn familiares a quieneshayan trabajado con versiones
anteriores de SQL. Server. Adems, SQL Server2012 va ms all, al permitir una
mayor flexibilidad a la hora de realizarcopias de seguridad. Esta leccin explica las
diferentes opciones disponiblesdentro del motor de copia de seguridad de SQL
Server.




Las estructuras de registro y de la base de datos
Para comprender la arquitectura de las copias de seguridad y de restauracinde una
base de datos, deber familiarizarse con la estructura bsica de lasbases de datos,
grupos de archivos, extensiones, pginas de datos y registros de transaccin de
SQL Server.

Permisos para la copia de seguridad
Frente a lo que ocurra en versiones anteriores de SQL Server, SQL Server2012
pretende reforzar la seguridad mediante la mplementacin del principiode
privilegios mnimos, es decir: la utilizacin de un conjunto mnimo depermisos
necesarios para realizar cualquier operacin. As, deber saberqu permisos son
necesarios para ejecutar una copia de seguridad. Independiente de cmo se inicien,
las copias de seguridad se ejecutarn dentrodel motor de Ja base de datos bajo el
contexto de seguridad de la cuenta deservicio de SQL Server. Debe conceder los
permisos necesarios a estacuenta para leer y escribir en cualquier directorio que
utilice en la creacinde la copia de seguridad; en caso contrario, las copias de
seguridad darn un mensaje de error, ya que carecern de los permisos
suficientes. Paraconceder a un usuario los permisos necesarios para crear una copia
deseguridad de Ja base de datos, aada al usuario como miembro de la
funcindbobackupoperator. Esta funcin nicamente puede realizar copias
deseguridad, registros o control dentro de la base de datos. No se permiteningn
otro tipo de acceso.

Copias de seguridad completas.
La creacin de una copia de seguridad completa tiene como propsito capturar
todos los datos almacenados dentro de la base de datos. El motor de copiade
seguridad lleva a cabo esta tarea mediante la extraccin de todas las extensiones
de la base de datos dedicados a un objeto. Posteriormente, podr utilizar una copia
de seguridad completa para recrear la base de datos. Este mtodoest siempre a su
disposicin, independientemente del modelo de recuperacin que haya configurado
para la base de datos.




La granularidad de una copia de seguridad.
Seguramente habr ledo o leer en numerosos libros, que una copia de seguridad
de SQL realiza una copia de una pgina de datos y no de una extensin.Esto no es
del todo correcto. SQL Server no dedica una nica pgina de datosa un objeto que
necesite espacio, sino que dedica una extensin completa. Elmotor de copia de
seguridad sigue el mismo principio: extrae todas las pginas dedicadas a un objeto
y, dado que la dedicacin se produce extensin porextensin, el motor de copia de
seguridad hace, en efecto, una copia de seguridad de todas las extensiones que
SQL Server haya dedicado a objetos,independientemente de si SQL Server ha
escrito datos o no en todas laspginas dentro de la extensin.

Frente a lo que ocurra en versiones anteriores de SQL Server, SQL Server2012
pretende reforzar la seguridad mediante la implementacin del principiode
privilegios mnimos, es decir: la utilizacin de un conjunto mnimo depermisos
necesarios para realizar cualquier operacin. As, deber saberqu permisos son
necesarios para ejecutar una copia de seguridad. Independiente de cmo se inicien,
las copias de seguridad se ejecutarn dentrodel motor de la base de datos bajo el
contexto de seguridad de la cuenta deservicio de SQL Server. Debe conceder los
permisos necesarios a estacuenta para leer y escribir en cualquier directorio que
utilice en la creacinde la copia de seguridad; en caso contrario, las copias de
seguridad darnun mensaje de error, ya que carecern de os permisos suficientes.
Paraconceder a un usuario los permisos necesarios para crear una copia
deseguridad de la base de datos, aada al usuario como miembro de la
funcindbobackupoperator. Esta funcin nicamente puede realizar copias
deseguridad, registros o control dentro de la base de datos. No se permiteningn
otro tipo de acceso.

Copias de seguridad completas.
La creacin de una copia de seguridad completa tiene como propsito capturartodos
los datos almacenados dentro de la base de datos. El motor de copiade seguridad
lleva a cabo esta tarea mediante la extraccin de todas las extensiones de la base
de datos dedicados a un objeto. Posteriormente, podr utilizar una copia de
seguridad completa para recrear la base de datos. Este mtodoest siempre a su
disposicin, independientemente del modelo de recuperacin que haya configurado
para la base de datos.

La granularidad de una copia de seguridad.
Seguramente habr ledo o leer en numerosos libros, que una copia de seguridad
de SQL realiza una copia de una pgina de datos y no de una extensin.Esto no es
del todo correcto. SQL Server no dedica una nica pgina de datosa un objeto que
necesite espacio, sino que dedica una extensin completa. Elmotor de copia de
seguridad sigue el mismo principio: extrae todas las pginas dedicadas a un objeto
y, dado que Ja dedicacin se produce extensin porextensin, el motor de copia de
seguridad hace, en efecto, una copia de seguridad de todas las extensiones que
SQL Server haya dedicado a objetos,independientemente de si SQL Server ha
escrito datos o no en todas laspginas dentro de la extensin.

El motor de copia de seguridad est configurado para realizar una copia
deseguridad tan rpidamente como sea posible utilizando una cantidad mnimade
recursos. Al iniciar una copia de seguridad, el motor de copia de seguridadescribe
las pginas en el dispositivo de copia de seguridad sin prestar atencin a la
ordenacin. Dado que la ordenacin no es necesaria en la copia deseguridad, SQL
Server puede abrir mltiples hilos para escribir datos con lamayor rapidez permitida
por el medio de escritura empleado. El nico factorque limita la velocidad de la
copia de seguridad es la velocidad a la que losdatos pueden ser copiados en el
dispositivo.
Dado que una copia de seguridad no se realiza de forma instantnea y puedetener
lugar mientras los usuarios estn conectados con la base de datos al tiempoque
ejecutan consultas, es posible que se produzca una inconsistencia lgica en labase
de datos. Si una pgina de datos se ha escrito en el dispositivo de copia
yposteriormente se ha modificado, la restauracin de esta copia de seguridad
haraque la base de datos entrase en un estado de inconsistencia.
No obstante, SQL no permite que esto ocurra, ya que aplica los siguientespasos
durante el proceso de copia de seguridad completa:

1. Bloquea la base de datos, as como todas las transacciones.
2. Coloca una marca en el registro de transacciones.
3. Libera el bloqueo de la base de datos.
4. Crea una copia de seguridad de todas las pginas de la base de datos.
5. Bloquea la base de datos y todas las transacciones.
6. Coloca una marca en el registro de transacciones.
7. Libera el bloqueo de la base de datos.
8. Extrae todas las transacciones que se han producido entre las dos marcasde
registros y las anexa a la copia de seguridad.

Este proceso garantiza que la base de datos sea totalmente coherente en
elmomento de la finalizacin de la copia de seguridad.
La instruccin bsica para realizar una copia de seguridad de la base de datos es:
BACKUP DATABASE <database name> TO DISK = <directory>\filenarne>
WITH INIT

Utilice la clusula TO de la instruccin BACKUP DATABASE para especificarel
dispositivo en el que se guardar la copia de seguridad; puede tratarse deun
dispositivo de copia de seguridad lgico creado para tal efecto, o puedeespecificarse
una ruta explcita a DISK o TAPE. La clusula WITH tiene msde una docena de
parmetros; todos ellos son opcionales. El parmetro INIT(el ms comn) ordena a
SQL Server sobrescribir cualquier elemento del dispositivo de copia que pueda
existir antes de empezar la operacin de guardado de copia de seguridad.

Copias de seguridad diferenciales.

Una copia de seguridad diferencial captura todas las extensiones que
hayancambiado desde la ltima copia de seguridad completa de la base de datos.
Elprincipal propsito de una copia de seguridad diferencial es el de reducir elnmero
de copias de seguridad del registro de transacciones que debern serrestauradas.
Utilice la copia de seguridad diferencial junto a una copia deseguridad completa. Si
esta ltima no existe, no podr crear una copia diferencial. Al igual que ocurre con
las copias completas, puede realizar una copia diferencial de una base de datos
independientemente del modelo derecuperacin especificado para la misma.

Observe que una copia diferencial no es una copia incremental. Una copia de
seguridad incremental captura cualquier cambio realizado desde la copia
deseguridad incremental anterior. En consecuencia, la restauracin de una copia de
seguridad incremental necesita de todas las dems copias de
seguridadincrementales realizadas con anterioridad. Una copia de seguridad
diferencialcaptura siempre todas las extensiones que han cambiado desde la ltima
copia de
seguridad completa, de modo que cada copia de seguridad diferencial contienetodo
aquello que contenga toda copia de seguridad diferencial previa. Por ejemplo,
imagine que realizamos una copia de segundad completa a medianoche y que
a lo largo del da se van creando copias de seguridad diferenciales cada
cuatrohoras. La copia de seguridad diferencial de las 04:00 contendra todas las
extensiones que han sido modificadas desde la medianoche. L.a copia diferencial de
las08:00 contendrfa, a su vez, todas las extensiones que han sido modificadas
desdela medianoche. Y por ltimo, la copia diferencial del medioda contendra a su
veztodas las extensiones modificadas desde la medianoche.

Para determinar que extensiones deben guardarse mediante una copia deseguridad
diferencial, SQL Server mantiene un mapa de extensiones. Unmapa de extensiones
no es ms que una pgina de datos dentro de la base dedatos; cada bit dentro de
la pgina representa una extensin. Cuando SQLServer modifica una extensin,
cambia el bit correspondiente de la extensin de O a 1. Al crear una copia de
seguridad completa, SQL Server restaura todos los bits a O. De este modo, SQL
Server deber interrogar nicamentea esta pgina para decidir qu extensiones
debe guardar. Dado que las basesde datos pueden tener un tamao ilimitado y las
pginas de datos nicamente pueden ocupar 8 KB, SQL Server crear una de estas
pginas cada8,192 extensiones dedicadas a los objetos de la base de datos. As,
una nica pgina puede cubrir miles de pginas de datos.

La instruccin ms sencilla para realizar una copia de seguridad dferencial es:

BACK DATABASE <database name> TO DISK <directory>\fileflame> WITH
DIFFERENTIAL

La instruccin es prcticamente idntica a la utilizada en una copia de seguridad
completa, salvo que requiere el uso del parmetro DIFFERENTIAL. Lasdems
opciones funcionan igual que en una copia de seguridad completa.




Copias de seguridad del registrode transacciones.
Puede realizar copias de seguridad del registro de transacciones nicamentepara
aquellas bases de datos que hayan sido configuradas en el modelo derecuperacin
completo o de recuperacin por medio de registros de operaciones masivas, y en
las que an no se haya producido una transaccinminimarnente registrada. Las
copias de seguridad del registro de transacciones nicamente se permiten despus
de haber realizado una copia de seguridad completa. Una copia de seguridad del
registro de transacciones contienenicamente un subconjunto de datos y requiere
tener tambin al menos unacopia de seguridad completa que nos permita recuperar
la base de datos.
Una copia de seguridad de registro copia el registro activo. Se inicia en el nmerode
secuencia de registro (LSN, del ingls Log SequenceNumber) en el que se
cornpletara la copia de seguridad de registro anterior. SQL Server realiza
posteriormente una copia de seguridad de todas las transacciones posteriores hasta
que elproceso de copia tope con una transaccin abierta, momento en el que el
procesode copia de seguridad del registro finaliza. Todo nmero de secuencia de
registroque haya sido copiado puede ser eliminado del registro de transacciones, lo
cualpermite al sistema reutilizar el espacio de registro.

Registro de transaccin, replicaciones y
copiaexacta o mirroring de la base de datos.
Si est implementando una replicacin transaccional o un proceso de copiaexacta
de la base de datos (mirroring), existe un requisito adicional sobre el registro de
transacciones. Ambas caractersticas garantizan que los datos setransmitan, y en
consecuencia deben asegurarse de que la transmisin dedatos se ha producido
correctamente antes de que SQL Server elimine cualquier transaccin del registro,
independientemente de si ha sido copiada o no.Al utilizar estas caractersticas,
nicamente podr eliminar una transaccin...:
1. ... si ha sido asignada con xito a la base de datos de distribucin.
2. ... si ha sido asignada con xito a la base de datos de copia.
La forma ms sencilla de ejecutar una copia de seguridad del registro de
transacciones es mediante la siguiente declaracin

BACKUP LOG <database name> TO DISK = directory>\<filename> WITHINIT
Cmo Crear una copia de seguridadde archivo o
grupo de archivos.
Las copias de seguridad de grupo de archivos ofrecen una estrategia de copiade
seguridad alternativa a las copias de seguridad completas. En lugar derealizar una
copia de seguridad de la base de datos al completo, puede realizar una copia de
seguridad de los grupos de archivo de la misma. El punto departida para una
estrategia de copia de seguridad de grupo de archivos deber incluir una copia de
todos los grupos de archivo dentro de la base de datosque puedan ser
posteriormente recreados.
Deber seleccionar un mtodo para la copia de seguridad de grupo de archivos
cuando, por su tamao, resulta poco prctica guardar o restaurar la basede datos
completa.
Dado que una copia de seguridad de grupo de archivo nos permite realizar copiasde
partes de una base de datos, deber configurar la base de datos en el modelo
derecuperacin completa o de recuperacin por medio de registros de
operacionesmasivas, de manera que pueda crear una copia de seguridad de
lectura/escritura.Para restaurar la base de datos, podr entonces utilizar las copias
de seguridad degrupo de archivos, diferencial o de transaccin de registro.
La forma ms sencilla de realizar una copia de seguridad de grupo de archivos es:
BACKUP DATABASE <database name> FILEGROUP <f ilegroup name> TO DISK =
<directory>\filename>
Tambin puede tornar una copia de seguridad diferencial sobre la basebase de
datos o de un grupo de archivos. La instruccin bsica parauna copia de seguridad
de grupo de archivos diferencial es:
BACKUP DATABASE <database name> FILEGROUP = <f ilegroup name> TO DISK
=<directory>\<fileflame> WITH DIFFERENTIAL

Cmo crear una copia de seguridadmediante
medios reflejados.
Cada copia de seguridad crea una nica copia de los datos. Posteriormente,
eladministrador debe decidir si crear copias adicionales para proteger a la
organizacin de fallos en los medios. Este proceso de duplicacio puede resultar tan
tedioso como costoso en trminos de tiempo; adems, contar con unanica copia
de seguridad significa que contamos tambin con un nico puntode error durante el
proceso.
SQL Server 2012cuenta una caracterstica en la instruccin BACKUP. Durante la
creacin de la copia de seguridad, puede crear Copias adicionales deuna copia de
seguridad denominada reflejos. Para realizar esta operacin, utilizaremos la
siguiente clusula opcional dentro de la instruccin BACKUP:
[[MIRROR TO <backup_device> [,n]] [... next mirror]

Puede crear hasta cuatro reflejos diferentes; tres de ellos pueden
especificarsedentro de la clusula MIRROR TO. Una copia de seguridad mediante un
conjuntode medios reflejado impone ciertas restricciones sobre el tipo de medio
utilizadopara su creacin. Los medios utilizados para la creacin de cada reflejo
deben serdel mismo tipo y tener el mismo nmero de dispositivos. Adems,
debern poseerpropiedades similares. Por ejemplo, si estamos realizando una copia
de seguridaden un disco, todos tos espejos debern ser discos; si se trata de un
volumen decinta, todos los dems debern serlo tambin.
La divisin de datos dentro de las copiasde seguridad.
Un Conjunto de medios contiene, por norma general, un nico dispositivo
(porejemplo, una unidad de cinta o archivo) No obstante un conjunto de
mediospuede estar compuesto de hasta 4 dispositivos diferentes cuando el conjunto
de medios se compone de dispositivos mltiples, el motor de la copia deseguridad
genera un hilo por cada dispositivo fsico, y escribe una porcin delos datos dentro
de a copia de seguridad de cada dispositivo. Esto no es igual a la capacidad de
divisin de datos existente en la tecnologa RA1D, pero essimilar a lo que ocurre en
RAID O. Cada reflejo debe ser idntico a los dems.As, si especificamos un
Conjunto de medios que contiene dos dispositivos dedisco, cada reflejo deber
contener a su vez dos dispositivos de disco. Igualmente, si un Conjunto de medios
contiene 64 dispositivos de cinta, el espejodeber especificar 64 dispositivos de
cinta.

Cuando Utilizamos copias de seguridad mediante conjuntos de medios reflejados,
SQL Server lee la pgina a partir de los archivos de datos una vez yposteriormente
crea copias mltiples aI tiempo que escribe la pgina en eldisco o cinta. Este
proceso tiene como resultado la escritura de la mismapgina de datos en cada uno
de los reflejos de forma simultnea Para asegurar un impacto mnimo mientras se
utiliza esta propiedad, cada reflejo debertener un tipo de dispositivo idntico con
propiedades similares.
Localizacin de las copias de seguridad.
Uno de los errores ms comunes consiste en pensar que los dispositivos quese
utilizan para la copia de segundad han de estar fsicamente unidos a lamquina en
la que se aloja SQL Server. Las copias de segundad puedenenviarse a dispositivos
unidos de forma local, y tambin pueden enviarse auna ruta UNC (Convencin de
Nomenclatura Universal). Al enviar las copiasde seguridad a una ruta UNC. deber
tener en cuenta el impacto de la copiade segundad sobre el ancho de banda de la
red.
El siguiente ejemplo crear una copia de segundad de la base de datos PUBS enun
conjunto de medios de dos discos, y crea tres reflejos de la copia. La primeracopia
se crea en un disco unido de forma local, mientras que cada uno de losreflejos son
un recurso de red al que se accede por medio a una ruta UNC.

BACKUP DATABASE PUBS TO DISK=C:DEMO\BACKUP\PUBS1B.BAK
MIRROR TO DISK=\\BAKSERVERl\BACKUP\PUBMIRROR1A.BACK
DISK= \\BAKSERVER1\BACKUP\PUBSMIRROR1.BAK
MIRROR TO DISK= \\BAKSERVER2 \BACKUP\PUBMIRROR2A.BACK
DISK= \\BAKSERVER2\BACKUP\PUBSMIRROR2.BAK
MIRROR TO DISK= \\BAKSERVER3\BACKUP\PUBMIRROR3A.BACK,
DISK= \\BAKCSERVER1\BACKUP\PUBSMIRROR3.BAK
WITH FORMAT
GO

La clusula FORMAT.
La clusula FORMAT es, normalmente , un parmetro opcional. Este
parmetroescribe un nuevo encabezamiento de medios en cada conjunto de
medios.sobrescribiendo el encabezamiento previo e invalidando cualquier otra copia
de seguridad contenida en el medio. No obstante, la clusula FORMATes obligatoria
en las copias de seguridad mediante un conjunto de mediosreflejados.

Copias de seguridad parciales.
Es posible tener bases de datos en las que algunos grupos de archivo sean deslo
escritura mientras que otros sean de escritura. En versiones anteriores deSQL
Server, una copia de seguridad completa capturaba todas las extensiones dedicadas
en una base de datos, an cuando el grupo de archivos estuviera marcado como de
solo lectura, lo cual significaba que no se realizabaningn cambio en los datos. En
SQL Server 2012, existe un parmetro aadido a la instruccin BACKUP. La clusula
READ WRITE FILEGROUPS haceque el motor de la copia de seguridad salte todos
aquellos archivos marcadoscomo de slo lectura, ahorrando tiempo y espacio en la
copia de seguridad,ya que el motor nicamente debe localizar el conjunto de
extensiones quepueden ser modificadas.
A continuacin se muestra un ejemplo de ejecucin de una copia de seguridad
parcial:
BACKUP DATABASE PUBS READ_WRITE_FILEGROUPS TO
DISK= C: \DEMO\BACKUP\PUBS1.BAK

Prctica: Cmo crear una copiade seguridad de una base
de datosmediante copias de seguridad
completas,diferenciales, de transaccin de registrosy de
grupo de archivo, diferencialde grupo de archivo y de
registrode transacciones.

En esta prctica, crearemos copias de seguridad de la base de datos
AventureWorksutilizando dos mtodos diferentes: el completo/diferencial/de
registro de transaccionesy el de grupo de archivos/diferencial/de registro de
transacciones.

Prctica 1: Crear una copia de seguridad mediante
copiacompleta, diferencial y de registro de transacciones.
En esta prctica, crearemos una copia de seguridad de la base de
datosAdventureWorks utilizando varias copias completas, diferenciales y de registro
de transacciones.
1. Inicie SSMS, conecte con su instancia de SQL Server y abra una nuevaventana
de consulta.
2. Cree un nuevo directorio llamado C:\AdSql\test2.
3. Ejecute la siguiente instruccin para crear una copia de seguridad completa de la
base de datos:
Use MASTER
BACKUP DATABASE Adventureworks TO DISK = C:\AdSql\test2\AW.BAK'
4. Realice un cambio en la tabla Production. Product de la base de datos.(Ejemplo:
updateProduction.Product SET StandarCost = StandarCost +1)
5. Ejecute la siguiente instruccin para crear una copia de seguridad del registro de
transacciones y capturar el cambio realizado:
BACKUP LOG AdventureWorks TO DISK='C:\AdSql\test2\AW1.TRN'
6. Realice otro cambio en la tabla Production. Product.
7. Ejecute la siguiente instruccin para crear una copia de seguridad diferencial de
la base de datos:
BACKUP DATABASEAdventureWorks TO DISK='C:\AdSql\test2\AWDIFF1.BAK' WITH
DIFFERENTIAL
8. Realice otro cambio en la tabla Production.Product.
9. Ejecute la siguiente instruccin para crear una copia de seguridad completa de la
base de datos de vuelta en la localizacin de disco especificada:
BACKUP LOG AdventureWorks TO DISK='C:\AdSql\test2\AW2.TRN'
Revise la carpeta C:\AdSql\test2\


Prctica 2: Crear una copia de seguridad de una basede datos
mediante copias de seguridad de grupode archivos, diferencial de
grupo de archivosy de registro de transacciones.

En esta prctica, aadiremos un segundo grupo de archivos a la base de
datosAdventureWorks y posteriormente crearemos una serie de copias de seguridad
de grupo de archivos completa, diferencial de grupo de archivos y deregistro de
transacciones.
1. Inicie SSMS, conecte con su instancia SQL Server y abra una nueva ventana de
consulta.
2. Cree un directorio llamado C:\AdSql\test3
3. Ejecute el siguiente lote de instrucciones para aadir el grupo de archivosFG1:
Use AdventureWorks
ALTER DATABASE [AdventureWorks]
ADD FILEGROUP [FG1]
Go
ALTER DATABASE [AdventureWorks]
ADD FILE
( NAME = AW1DATA
FILENAME 'C:\AdSql\test3\FG1.NDF',
SIZE = 5 MB)
TO FILEGROUP [FG1]
GO
--Ahora creamos una tabla de prueba en el grupo de archivos
CREATE TABLE dbo.t1(id INT, v CHAR (1000) DEFAULT 'bbbb',
) ON [FG1]
GO
4. Para crear una copia de seguridad completa de grupo de archivos, ejecutela
siguiente instruccin:
BACKUP DATABASE Adventureworks FILEGROUP = 'PRIMARY' TO DISK
='C:\AdSql\test3\AWPRI .BAK'
GO
BACKUP DATABASE AdventureWorics FILEGROUP = 'FG1' to disk
='C:\AdSql\test3\AWFG1.BAK'
GO
5. Inserte una fila de datos en la tabla dbo. t1.
6. Para crear una copia de seguridad del registro de transacciones de la basede
datos, ejecute la siguiente instruccin:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdSql\test3\AW3.TRN'
7. lnserte otra fila de datos en la tabla dbo. t1.
8. A continuacin, cree una copia de seguridad diferencial de grupo de archivos
mediante la siguiente instruccin:
BACKUP DATABASE Adventureworks FILEGROUP = 'FG1' TO DISK
'C:\AdSql\test3\FG1DIFF1.BAK' WITH DIFFERENTIAL
9. Inserte una nueva fila en la tabla dbo.t1.
10. Ejecute la siguiente instruccin para crear una nueva copia de seguridad
deregistro de transacciones que capture el ltimo cambio realizado en los datos:
BACKUP LOG AdrentureWorks TO DISK = 'C:\AdSql\test3\AW4.TRN'





Tema 13:Restaurar una basede datos.
La habilidad para restaurar una copia de seguridad de una base de datos
determinala rapidez con la que la base de datos puede responder a los requisitos de
unnegocio determinado despus de haber sufrido daos. Esta leccin explica
todaslas opciones disponibles en SQL Server 2012 para restaurar una base de datos
deforma total o parcial. Puede utilizar la informacin presentada en esta leccin
paracrear la base de un plan de recuperacin en caso de desastre para su
organizacin.
La planificacin orientada a la recuperacin.
La restauracin de una base de datos es el concepto ms importante quedebe
manejar. Este tema se explica en esta leccin porque anteriormente eranecesario
explicar los diferentes tipos de copias de seguridad que puedencrearse para
elaborar una estrategia de restauracin. Esta estrategia es laque, en definitiva,
determinar si una copia de seguridad tiene xito o no.Como suele decirse en estos
casos: si nunca ha restaurado una copia deseguridad, es como si no la tuviera.
Restaurar una copia de seguridad completa.
La mayor parte de operaciones de restauracin se inician recreando una base
dedatos en un punto especfico para posteriormente aplicar todas las copias de
seguridad siguientes y actualizar la base de datos a un punto especfico. El proceso
comienza con la restauracin de una copia de seguridad completa.
Tal y como se ha explicado anteriormente, una copia de seguridad
completacontiene todos los contenidos de una base de datos al completo. Para
reconstruirla, la operacin de restauracin debe colocar las pginas de vuelta en la
basede datos en un orden secuencial. Este proceso asegura la completa coherencia
dela base de datos, pero lleva ms tiempo. Restaurar una copia de seguridad
cornpleta requiere, por norma general, un 30 por 100 ms de tiempo de lo que se
hatardado en crear la propia copia de seguridad.
Sobrescribir y mover una base de datos.
La restauracin de una copia de seguridad completa sobrescribe la base dedatos del
mismo nombre, en caso de que sta exista en la misma instancia. Si la base de
datos no existe, la operacin de restauracin crea los archivos ygrupos de archivos
de Ja base de datos antes de restaurar las pginas. Dadoque la creacin de estos
archivos desde cero puede suponer un consumosignificativo de tiempo, no debe
eliminar la base de datos antes de restaurarla si va a sobrescrib irla. Si va a realizar
una copia de seguridad y restauracinpara mover la base de datos a un servidor
diferente con una estructura dedirectorios diferente, o si la estructura de directorios
ha sido modificada,puede utilizar la opcin WITH MOVE para hacer que la operacin
de restauracin cree los archivos subyacentes en una ruta diferente a la de la copia
deseguridad original.
A continuacin se muestra un ejemplo de la sintaxis para la restauracin completa
de una base de datos:
RESTORE DATABASE PUBS FROM DISK = 'C:\DEMO\BACKUP\PUBSFULL.BAK'
WITH REPLACE, STANDBY ='C:\DEMO\BACKUP\PUBSSTANDBY.STN'

Esta instruccin utiliza el contenido del archivo PUBSFULL.BAK para la operacin de
restauracin. La opcin REPLACE hace que SQL Server sobrescriba labase de datos
existente, de nombre PUBS. La opcin STANDBY hace que la basede datos quede
en estado de restauracin: no se permiten ms operaciones deescritura, pero los
usuarios pueden conectarse a la base de datos y escribir declaraciones SELECT.
Otras dos clusulas importantes en cualquier instruccin de restauracin son WITH
RECOVERY o WITH NORECOVERY.
Si la opcin de restauracin utiliza la opcin WITH RECOVERY, la base de datosest
en lnea, el LSN avanza y la base de datos puede aceptar transacciones. No
sepermite ninguna operacin de restauracin ms despus de haber recuperadouna
base de datos mediante la opcin WITH RECOVERY.
Cuando una operacin de restauracin utiliza la opcin WITH NORECOVERY,el
estado de la base de datos o del grupo de archivos sigue fijado en
modoRESTORING. En este estado, es posible restaurar copias de seguridad
adicionales, tales como las copias de seguridad diferenciales o del registro de
transacciones, para aplicar los cambios que hayan ocurrido desde que se realiz la
ltimacopia de seguridad completa.
Las operaciones de restauracin
Una operacin de restauracin puede constituir un paso nico en el que serestaure
una copia de seguridad completa, lo cual permite recuperar la basede datos y
seguir adelante con las transacciones. No obstante, en la mayorparte de entomos
de produccin, una operacin de restauracin consiste envarios archivos de copias
de seguridad mltiples que se van restaurando unodespus del otro, de manera
que la base de datos vaya progresivamentequedando en un estado determinado y
poder as asegurar que se recupera elmayor nmero de datos posible. Para que
esto ocurra, la instruccin RESTOREdebe permitir que el usuario pueda especificar
de forma explcita en qumomento se llev a cabo la ltima operacin de
restauracin, y la base dedatos debe recuperarse y ser puesta en servicio.

Restaurar una copia de seguridaddiferencial.
Para restaurar una copia de seguridad diferencial, primero ha de restaurar lacopia
de seguridad completa al tiempo que se asegura de que la base de datos noha sido
recuperada an. Posteriormente, la copia de seguridad diferencial msreciente se
aplica a la base de datos.
Restauracin diferencial de grupo de archivos.
El proceso a seguir para restaurar una copia de seguridad diferencial degrupo de
archivos es muy parecido a la restauracin de una copia de seguridad diferencial:
deber ejecutar una restauracin completa de grupo de archivos sin recuperar el
grupo de archivos.
Examine el siguiente ejemplo, que muestra una secuencia de operaciones
pararealizar una copia de seguridad completa seguida de una copia de
seguridaddiferencial:
RESTORE DATABASE PUBS FRON DISK = 'C:\DEMO\BACKUP\PUBSFULL.BAK' WITH
NORECOVERY
RESTORE DATABASE PUBS FROM DISK = C:\DEMO\BACKUP\PUBSDIFF.BAK WITH
RECOVERY
La primera instruccin restaura una copia de seguridad completa pero deja la base
de datos sin recuperar. La segunda aplica la restauracin y a continuacinrecupera
la base de datos.
La sintaxis para restaurar una copia de seguridad completa es idntica a lautilizada
para restaurar una copia de seguridad diferencial. SQL Server toma las extensiones
de la copia diferencial y las escribe en la base de datos.
A continuacin se muestra un ejemplo de esta secuencia de operaciones parauna
copia de seguridad de grupo de archivo junto con una copia de seguridaddiferencial
de grupo de archivos:


RESTORE DATABASE Adventureworks FILEGROUP = FG1 FROM DISK =
'C:\TEST\AWFG1. BAK' WITH NORECOVERY
RESTORE DATABASE Adventureworks FILEGROUP = FG1 FROM DISK =
'C:\TEST\FG1DIFF1.BAK' WITH RECOVERY
Al restaurar una copia de seguridad diferencial para mover una restauracin
degrupo de archivos hacia adelante, no es necesario especificar el grupo de
archivos al que se est aplicando el diferencial. SQL Server reconoce de forma
automtica los grupos de archivo que se encuentran en la fase RESTORING,
ascomo todas las extensiones dentro de la copia de seguridad diferencial que
pueden aplicarse al grupo de archivos. Todas aquellas extensiones que no se
correspondan con un grupo de archivos en fase RESTORING son ignoradas.

Restaurar una copia de seguridaddel registro de
transacciones.
Puede utilizar las copias de seguridad del registro de transacciones para avanzarla
base de datos hasta un punto en el tiempo. Por normal general, este punto esla
ltima operacin ejecutada contra la base de datos, pero es posible seleccionarun
momento diferente. Los registros de transacciones pueden aplicarse a unacopia de
seguridad completa, o despus de la restauracin de una copia deseguridad
diferencial.
Una copia de seguridad del registro de transacciones contiene una secuencia
detransacciones identificada por un LSN. Las transacciones pueden
nombrarsetambin de forma explcita mediante una marca en el registro de
transacciones,que registra la hora exacta en la que se ejecuta una transaccin, as
como loscambios realizados en la misma.
Restaurar una base de datos a un punto especfico.

Utilice la opcin STOPAT para restaurar una base de datos a un LSN, transaccin
con nombre, o punto en el tiempo concreto. Esta caracterstica permiteque la base
de datos sea restaurada de forma que no contenga todas lastransacciones.
Normalmente, elegimos esta opcin para restaurar una basede datos que se ha
corrompido para restaurar justo hasta el momento en quese ha producido la
corrupcin de datos. Puede tambin utilizar esta opcinpara recuperar una base de
datos de la que se hayan eliminado datos deforma accidental. La base de datos se
restaura hasta un punto en el tiempojusto antes de que se borraran los datos, pero
puesto que este procesoocasiona la prdida de todas las transacciones que se
hayan realizado despus de este punto, deber utilizarlo con precaucin.


Cadenas del registro de transacciones.

Cuando se crea una base de datos, el LSN comienza en 1 y se vaincrementando
hasta el infinito. Mientras la base de datos no cambie a unmodelo de recuperacin
simple o no se ejecute la instruccin BACKUP LOG.. .WITH TRUNCATE ONLY, las
copias de seguridad del registro de transacciones ejecutadas contra la base de
datos forman una cadena continua hasta elmomento de la creacin de la base de
datos.

La cadena del registro de transacciones cruza todas las copias de
seguridadcompletas, diferenciales y de grupo de archivos que se hayan
realizado.Mientras conserve todas las copias de seguridad y las subsiguientes
copiasde seguridad del registro de transacciones, podr recuperar una base dedatos
hasta un punto en el tiempo iniciando cualquier copia de seguridadcompleta y
posteriormente aplicando todas las copias de seguridad del registro de
transacciones subsiguientes a la misma.
En casos extremos, se han llegado a recuperar bases de datos mediante
larestauracin de una copia de seguridad completa creada aos antes y
posteriormente restaurando las copias de seguridad del registro de transacciones
creadas en los aos posteriores.


A continuacin se muestran dos secuencias de restauracin diferentes:

-- Secuencia para restaurar usando un respaldo completo, diferencial y
transaccional.Primero el completo

RESTORE DATABASEAdventureWorks FILEGROUP = 'FG1' FROM DISK =

'C:\TEST\AWFG1. BAK WITH NORECOVERY

--Diferencial

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\TEST\FG1DFF1.BAK'

WITH NO RECOVERY

- -Transaccional

RESTORE LOG Adventureworks FROM DISK = 'C:\TEST\AW2.TRN' WITH RECOVERY

-- Secuencia de restauracion usando respaldos completes y de archivos
transaccionales multiples.
--Completo
RESTORE DATABASE AdventureWorks FILEGROUP = 'FG1' FROM DISK =
'C:\TEST\AWFG1.BAK' WITH NORECOVERY
- -Transaction log
RESTORE LOG AdventureWorks FROM DISK = 'C:\TEST\AWl.TRN'
WITHNORECOVERY
RESTORE LOG AdventureWorks FROM DISK 'C:\TEST\AW2.TRN' WITH RECOVERY

Recuperar una base de datos hasta un puntoen el tiempo
en caso de desastre.

La recuperacin de bases de datos sin que se produzca prdida de datosresultara
una tarea mucho ms fcil silos problemas nicamente ocurrieranuna vez que la
copia de seguridad se ha creado y antes de que la aplicacinlleve a cabo
transacciones adicionales. Pero este no suele ser el caso. Encualquier desastre,
tendremos siempre transacciones en el registro para lasque no existe una copia de
seguridad.Por esta razn, el primer paso a seguir en toda operacin de
recuperacin esel de escribir una instruccin BACKUP LOG al final. Mediante este
proceso,capturaremos todas las transacciones para las que no exista una copia de
seguridad; tradicionalmente, conocemos este proceso como copia de seguridad de
la cola del registro. Dado que es posible emitir una instruccin BACKUPLOG contra
una base de datos an cuando todos los archivos de datos(incluido el archivo
primario) ya no est disponible, la nica excusa para norealizar una copia de
seguridad de la cola del registro es no hacer la copiacuando el registro de
transacciones ha dejado de existir.
La copia de seguridad de la cola del registro se convierte entonces en elregistro de
transacciones final que aplicaremos en el proceso de restauracin, permitiendo que
la base de datos pueda ser recuperada sin que se hayaperdido ningn dato.

La restauracin parcial.
SQL Server 2012 permite restaurar una base de datos de forma parcial mientrasel
resto de la base de datos sigue siendo accesible. Mientras la consulta que
estsiendo ejecutada no solicite los datos dentro del grupo o grupo de archivos
quese estn restaurando, los usuarios no tienen por qu saber que la operacin
seest llevando a cabo.
Para realizar una restauracin parcial, aprovecharemos el hecho de que cadagrupo
de archivos (salvo el grupo de archivos primario) tiene un estado independiente del
estado en el que se encuentre la base de datos. Las restauracionesparciales
siempre se llevan a cabo utilizando copias de seguridad de grupos dearchivos.
Restaurar la granularidad.
Dependiendo de cmo se haya construido a base de datos, la restauracinde un
grupo de archivos puede afectar a mltiples tablas, a una nica tabla, oen el caso
de las particiones, a una porcin de una tabla.
Despus de que los grupos de archivo se hayan restaurado a la base de
datos,puede aplicar las copias de seguridad diferenciales yio del registro de
transacciones para actualizar la base de datos de acuerdo con los dems grupos de
archivo.
No es posible recuperar una porcin de una base de datos a un punto especficoen
el tiempo, porque todos los grupos de archivo dentro de la base de datosdeben
avanzar hasta el LSN actual para permitir una operacin de escritura enun grupo de
archivos determinado.
Restaurar una pgina corrupta.
Si bien no es frecuente, puede darse el caso de que una o ms pginas dentro
deuna tabla se corrompan. En versiones anteriores de SQL Server, esta
corrupcindaba lugar a un error grave que poda causar la desconexin de toda la
base dedatos. Arreglar el error dependa de la pgina que se hubiera corrompido. Si
lacorrupcin de la pgina se haba producido en una pgina del ndice, el
ndicepoda eliminarse y volverse a crear. Sin embargo, si la corrupcin ocurra en
losdatos, era necesario restaurar una copia de seguridad, lo que haca que la base
dedatos estuviera desconectada durante todo el proceso de restauracin.
SQL Server 2012 ofrece un mtodo alternativo para llevar a cabo esteproceso. Se
trata de la opcin PAGE_VERIFY_CHECKSUM. Tras habilitar estemodo de
verificacin en la base de datos, cualquier pgina que se corrompa esregistrada y
puesta en cuarentena, en un proceso conocido como cuarentenade pgina
corrupta. Para llevar a acabo la verificacin, ejecute la siguienteinstruccin:
ALTER DATABASE <database name> SET PAGE_VERIFY CHECKSUM

Esta opcin est desactivada de forma predeterminada, ya que consume
recursospara operaciones de lectura y escritura en cualquier pgina de la base de
datos. Sise activa, cada vez que sea necesario escribir o leer datos de una pgina,
SQLServer calcular la suma total para esa pgina. Si la operacin de suma de
comprobacin no coincide con la suma de comprobacin almacenada con
anterioridad en la pgina, eso quiere decir que la pgina est corrupta. Esta
desconexinhace que se produzca un mensaje de error y que la transaccin que ha
encontrado la pgina corrupta se revierta. Posteriormente, la pgina se registra en
la tablasuspect_pages de la base de datos msdb.
Para arreglar este problema, puede restaurar una pgina individual a partir deuna
copia de seguridad. A continuacin se muestra un ejemplo de un conjuntode
instrucciones que permiten restaurar una pgina corrupta:
--Respaldar el fin del archivo de transacciones.
BACKUP LOG PUBS TO DISK='C:\HA\DEMO\BACKUP\PUBS1.TRN' WITH INIT
GO
--Respaldar una pagina corrupta de un respaldo reciente
--Nota: Este comando require que no haya usuarios conectados a la base de datos
USE MASTER
GO
RESTORE DATABASE PUBS PAGE = '1:88'
WITH RECOVERY
GO
- -Se aplican archivos de transacciones adicionales para mover la pagina hacia
adelante
-- Aplicamos el fin del archivo de transacciones para traer a la base de datos a un
cierto punto en el tiempo
USE MASTER
GO RESTORE LOG PUBS
FROM DISK = 'C:\HA\DEMO\BACKUP\PUBS1.TRN'
WITH RECOVERY
GO

Restaurar con errores de medios.
Uno de los problemas ms difciles de superar durante la restauracin es el
deencontrarnos con medios que han resultado daados. En anteriores versionesde
SQL Server, un medio daado sola empeorar una situacin ya de por snegativa. El
dao que sufre un medio de copia de seguridad no suele detectarseantes de que se
inicie la copia; cuando la restauracin da comienzo, borra todolo que existiera con
anterioridad en la base de datos. Si la operacin de restauracin se interrumpiera,
tendramos una base de datos invalidada por completo.
Desgraciadamente, esto es lo que ocurre cuando los medios de copia de seguridad
estn daados.
SQL Server 2012ofrece una opcin para la instruccin RESTORE, quepermite a SQL
Server saltar los sectores daados de un medio y completar laoperacin de
restauracin. La opcin WITH CONTINUE_AFTER_ERROR saltalos sectores daados
y permite la restauracin de todas las partes que puedenleerse en un medio
concreto.
Si bien la operacin de restauracin puede completarse, no est garantizado quela
base de datos est operativa, ni tan siquiera que contenga datos. Cuando
secompleta una operacin RESTORE en la que se han producido errores en
losmedios, la base de datos queda en modo de emergencia: puede conectarse con
labase datos y ejecutar declaraciones SELECT, pero no pueden hacerse
cambiossobre los datos. Si decidimos que la base de datos est intacta y operativa,
podemos cambiar el estado para permitir operaciones normales. En el peor de
loscasos, cualquier dato intacto podr ser extrado de la base de datos. Esta,
evidentemente, no es una solucin ideal, pero es mejor que nada.

Validar una copia de seguridad.
Tras haber creado varias copias de seguridad, cmo sabemos cules de esascopias
son utilizables? La nica forma de garantizar que una copia de seguridades
utilizable es restaurarla y verificar todos los datos. El proceso puede consumiruna
gran cantidad de tiempo y no suele ser prctico. No obstante, SQL Servernos
permite verificar la integridad de una copia de seguridad. Si bien este mtodo no es
igual que restaurar una base de datos, nos ofrece la posibilidad decomprobar con
gran exactitud la integridad de una copia de datos.
Utilice la siguiente instruccin para verificar la integridad de una copia de
seguridad:
RESTORE VERIFYONLY FROM <backup_device>( , . . . n )

Al ejecutar esta instruccin, SQL Server comprueba el encabezamiento del medio
para asegurarse de que est intacto. Posteriormente, verifica la suma deverificacin
de la copia de seguridad, lee las cadenas internas de la pgina, yvuelve a calcular la
suma de verificacin de la copia de seguridad para comparar.
Se llevan a cabo entonces una serie de comprobaciones para asegurarse de que
lacopia de seguridad est intacta. No obstante, SQL Server no comprueba la
estructura de datos de la copia de seguridad.
Versiones anteriores y verificacin de la copiade
seguridad.
Las versiones anteriores de SQL Server contaban tambin con una instruccin
RESTORE VERIFYONLY que comprobaba el encabezamiento del medioy
posteriormente devolva un mensaje de confirmacin de xito o error de
latransaccin. Siempre que el encabezamiento estuviera intacto, se obtena
unmensaje de confirmacin de xito. A la hora de la verdad, este comportamiento
haca de la instruccin algo inservible en versiones anteriores, puestoque la
instruccin no realizaba ninguna comprobacin til. As, sola recomendarse no
utilizar esta instruccin. Pero ahora, SQL Server 2012 realiza todaslas
comprobaciones necesarias, de modo que cada vez que realice una copiade
seguridad, debera ejecutar esta instruccin.


Prctica: Restaurar la base de datosAdventureWorks.
Utilizando las copias de seguridad anteriores, restauraremos la base de
datosAdventureWorks a un momento actual en el tiempo.
1. Inicie SSMS, conecte con su instancia SQL Server y abra una nueva ventanade
consultas.
2. Cambie el contexto a la base de datos master.
3. Haga una copia de seguridad de la cola del registro mediante la
siguienteinstruccin:
BACKUP LOG AdventureWorks TO DISK = 'C:\ADSQL\TEST2\AWTAIL.TRW'
4. Ejecute las siguientes instrucciones RESTORE para restaurar la base de datos
AdventureWorks.
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\ADSQL\TEST2\AW.BAK'
WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM DISK =
'C:\ADSQL\TEST4\AWDIFF1.BAK'
WITH NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = 'C:\ADSQL\TEST2\AW2.TRN' WITH
NORECOVERY
RESTORE LOG AdventureWorks FROM DISK = 'C:\ADSQL\TEST2\AWTAIL.TRN'
WITH RECOVERY
5. Si ya ha realizado los ejercicios anteriores, la basede datos AdventureWorks
debera tener un nico grupo de archivos y latabla dbo. t1 no existir.
6. Si an no ha realizado los ejercicios de la copia de seguridad anteriores, deber
verificar que la base de datos Adventure Works contienetodos los cambios
realizados.





Tema 14: Moveruna base de datos.
En ocasiones, las bases de datos deben ser trasladadas, bien dentro del
mismoservidor, bien entre servidores. SQL Server ofrece tres mecanismos
diferentespara llevar a cabo esta tarea. El primero, consistente en crear una copia
de seguridad de la base de datos para su restauracin posterior, lo que se ha
explicado anteriormente. Ahora veremos los dos mtodos restantes: el mtodo de
separar/adjuntar y la utilizacin del Asistente de Copia de la Base de datos,que
permite utilizar el mtodo de separar/adjuntar o el Programa de Administracin de
Objetos (SMO) de SQL.

Mover una base de datos mediante el mtodo
separar/adjuntar.
Puede desmontar una base de datos de SQL Server separndola. Este
procesoelimina todas las entradas de las tablas del sistema para la base de datos,
haciendo que la base de datos no est accesible en la instancia de SQL Server.
Ancuando la base de datos sea inaccesible, los archivos que contienen los objetos
ydatos de la misma siguen existiendo en el sistema operativo, en la misma
localizacin en la que fueron creados. Despus de separarlos, es posible copiar
estosarchivos a un lugar determinado de la red, puesto que SQL Server ya no
necesitaacceder a ellos.
Para que la base de datos pueda volver a ser accesible, nicamente
deberadjuntarla. Este proceso aade una entrada en las tablas del sistema para
labase de datos; posteriormente, SQL Server habilitar el acceso a la base dedatos.
Utilice la siguiente instruccin para realizar una operacin de separacin:
EXEC sp_detach_db'AdventureWorks', 'true'

Utilice la siguiente instruccin para adjuntar una base de datos:
CREATE DATABASE AdventureWorks ON
(FILENAME = 'C:\TEST5\AdventureWorks_Data .mdf)
(FILENAME 'C:\TEST5\AdventureWorks_Log.ldf)
FOR ATTACH

Rendimiento del mtodo separar/adjuntar.
La operacin de separacin nicamente requiere que SQL cierre los archivosy
elimine una entrada en las tablas del sistema; la operacin de adjuntarnicamente
requiere que SQL abra tos archivos y cree una entrada en lastablas del sistema.
Cada operacin necesita, a su vez, de entre 1 y 2 segundos para ser completada.
Utilizar el Asistente de Copia de la Basede Datos.
Asegrese de que ha instalado SQLServer IntegrationServices. El Asistente para
copiar bases de datos se ejecuta dentro de SQL ServerIntegrationServices (SSIS).
Para utilizar este asistente, deber tener SSISinstalado. La cuenta proxy bajo la
cual se ejecuta el paquete deber sertambin miembro de la funcin sysadmin,
tanto en la instancia de origencomo en la de destino.
El Asistente para la copia de bases de datos permite copiar todos los objetosdentro
de una base de datos a otra instancia, o a otra base de datos dentro de lamisma
instancia. Este proceso copia todos los objetos, usuarios, esquemas ypermisos de la
base de datos, creando un duplicado exacto de la misma. Debercopiar los objetos
de nivel de servidor por separado.
Para acceder al asistente, haga clic con el botn derecho en una base de datos
yseleccione Tareas>Copiar base de datos. Cuando aparezca la pantalla de
bienvenida, haga clic en Siguiente. Seleccione el servidor de origen desde el que
secopiar la base de datos y haga clic en Siguiente. Seleccione el servidor
dedestino y haga clic en Siguiente.
Seleccione el mtodo separar/adjuntar, o SMO. Si selecciona el primer
mtodo,SSIS separar la base de datos, la copiar en el destino indicado y
posteriormentela adjuntar. Este proceso es exactamente el mismo que se ha
descrito con anterioridad en este captulo. Si selecciona SMO, la base de datos
permanecer enlnea y ser accesible para los usuarios, al tiempo que los API de
escritura seutilizarn para generar scripts que recreen todos los objetos en el
destino. Semovern todos los datos. La copia de una base de datos mediante SMO
es unproceso considerablemente ms lento que los mtodos adjuntar/separar o
hacercopia de seguridad/restaurar.
Haga clic en Siguiente para seleccionar las bases de datos que desea mover ocopia.
Si especifica la opcin mover, la base de datos se crear en el destino
yposteriormente ser eliminada en el origen. Si especifica la opcin copiar, labase
de datos se crear tanto en origen como en destino. Haga clic en Siguientepara
desplegar la pgina de Configuracin de la base de datos de destino.
Puede especificar el nombre de una base de datos de destino junto con la
localizacin de los archivos. Si la base de datos ya existe, podr especificar que
lacopia elimine o sobrescriba la base de datos existente. Haga clic en Siguientepara
especificar las opciones del paquete SSIS, tales como el nombre del paquetey las
opciones de registros. Haga clic en Siguiente para especificar si desea que
elpaquete se ejecute de forma inmediata, o si prefiere que se ejecute a posterior,
ascomo para especificar en qu cuenta proxy deber hacerlo. Haga clic en
Siguiente para verificar las opciones seleccionadas. Para completar el asistente,
haga clicen Finalizar.

Prctica: Utilizar el mtodo separar/adjuntar para mover
una base de datos.
En este ejercicio, separaremos la base de datos AdventureWorks, la copiaremos a
una nueva localizacin y despus la adjuntaremos utilizando SSMS.
Es posible que los nombres de archivo de su base de datos Adventureworksvaren.
Tambin es posible que haya aadido grupos de archivo a la base dedatos en los
ejercicios anteriores. En esta prctica, se utilizarn nombres dearchivo genricos:
no olvide realizar los ajustes necesarios para trabajar ensu entorno.
1. Inicie SSMS y conecte con la instancia de SQL Server.
2. Asegrese de que no se ha creado ninguna Conexin con la base de
datosAdventure Works.
3. Dentro del Explorador de objetos, haga clic con el botn derecho en la basede
datos AdventureWorks y seleccione Tareas>Separar.
4. Haga clic en Aceptar.
5. Abra el explorador de Windows y copie los archivos .mdf, .ndf y .ldf
deAdventureWorks en el directorio c:\AdSQL\test5 creado anteriormente.
6. Haga clic con el botn derecho en el nodo del explorador de objetos y seleccione
Adjuntar.
7. Haga clic en Aadir y seleccione el archivo .mdfAdvetureworks. Haga clic en
Aceptar.
8. Verifique que la base de datos Adventure Works aparece en el exploradorde
objetos y que puede acceder a la base de datos, leerlos y escribir datos enla base
de datos.

También podría gustarte