Está en la página 1de 31

Tema 3 El Almacenamiento de las Bases de Datos

Contenido:

Contenido
1 Introducción al almacenamiento de datos con SQL Server ........................................................ 4
1.1 Cómo se almacenan los datos en SQL Server ..................................................................... 4
1.1.1 Archivos de base de datos........................................................................................... 4
1.1.2 Páginas y extensiones.................................................................................................. 5
1.1.3 Consideraciones para dispositivos de almacenamiento en disco ............................... 6
1.1.4 Niveles RAID ................................................................................................................ 6
1.1.5 Aislamiento de datos y archivos de registro ............................................................... 8
1.2 Gestión de archivos de datos .............................................................................................. 8
1.2.1 Cantidad de archivos de registro................................................................................. 9
1.2.2 Garantizar suficiente capacidad de archivo ................................................................ 9
1.2.3 Crecimiento automático versus crecimiento planificado ........................................... 9
1.2.4 Planificación del crecimiento del archivo de registro ............................................... 10
2 Gestión de almacenamiento para bases de datos del sistema ................................................. 11
2.1 Bases de datos del sistema SQL Server ............................................................................. 11
2.1.1 Master ....................................................................................................................... 11
2.1.2 msdb .......................................................................................................................... 11
2.1.3 Model ........................................................................................................................ 11
2.1.4 tempdb ...................................................................................................................... 11
2.1.5 Resources .................................................................................................................. 11
2.2 Mover bases de datos del sistema .................................................................................... 12
2.2.1 Mover las bases de datos msdb, model y tempdb.................................................... 12
2.2.2 Usando múltiples archivos ........................................................................................ 13
2.3 Demostración: mover archivos tempdb............................................................................ 13
3 Gestión de almacenamiento para bases de datos de usuario .................................................. 15
3.1 Crear bases de datos de usuario ....................................................................................... 15
3.1.1 CREAR BASE DE DATOS.............................................................................................. 15
3.1.2 Intercalaciones y valores predeterminados .............................................................. 16
3.1.3 Eliminar bases de datos............................................................................................. 16
3.2 Configurar opciones de base de datos .............................................................................. 16
3.2.1 Categorías de opciones ............................................................................................. 16
3.3 Demostración: creación de bases de datos ...................................................................... 17
3.4 Modificar bases de datos de usuario ................................................................................ 18
3.4.1 Modificar las opciones de la base de datos .............................................................. 18
3.4.2 Cambiar las opciones de compatibilidad de la base de datos .................................. 18
3.5 Administrar archivos de base de datos ............................................................................. 19
3.5.1 Agregar espacio a una base de datos ........................................................................ 19
3.5.2 Registro de transacciones ......................................................................................... 20
3.5.3 Eliminar archivos de base de datos ........................................................................... 20
3.5.4 Reducción de una base de datos............................................................................... 20
3.6 Introducción a los grupos de archivos .............................................................................. 21
3.6.1 Uso de grupos de archivos para la capacidad de administración de datos .............. 21
3.6.2 Uso de grupos de archivos para el rendimiento ....................................................... 22
3.6.3 Crear y administrar grupos de archivos .................................................................... 22
4 Mover archivos de base de datos ............................................................................................. 25
4.1 Mover archivos de base de datos de usuario ................................................................... 25
4.2 Uso de la instrucción ALTER DATABASE ............................................................................ 25
4.3 Separar y adjuntar bases de datos .................................................................................... 25
4.3.1 Separar bases de datos ............................................................................................. 25
4.4 ACTUALIZAR ESTADÍSTICAS ............................................................................................... 25
4.5 Bases de datos desmontables ........................................................................................... 26
4.6 Adjuntar bases de datos .................................................................................................... 26
4.7 Demostración: separar y adjuntar una base de datos ...................................................... 26
5 Configurar la extensión de la agrupación de almacenamientos intermedios .......................... 28
5.1 Introducción a la extensión del grupo de búferes ............................................................ 28
5.2 Consideraciones para usar la extensión del grupo de búferes ......................................... 28
5.3 Trabajar con la extensión del grupo de búferes ............................................................... 29
5.4 Configurar la extensión de la agrupación de almacenamientos intermedios .................. 29
5.5 Demostración: configuración de la extensión del grupo de búferes En esta demostración,
verá cómo:..................................................................................................................................... 30
Resumen del Tema
Una de las funciones más importantes para los administradores de bases de datos que trabajan con
Microsoft® SQL Server® es la administración del almacenamiento de las bases de datos. Es
importante saber cómo se almacenan los datos en las bases de datos, cómo crear bases de datos,
cómo administrar los archivos de la base de datos y cómo moverlos. Otras tareas relacionadas con
el almacenamiento incluyen la administración de la base de datos tempdb y el uso de dispositivos
de almacenamiento rápido para extender la caché de la agrupación de almacenamiento intermedio
de SQL Server.

Objetivos

• Describir cómo SQL Server almacena datos.


• Administrar el almacenamiento de las bases de datos del sistema.
• Administrar el almacenamiento para bases de datos de usuarios.
• Mover archivos de base de datos.
• Configure la extensión de la agrupación de almacenamiento intermedio.
1 Introducción al almacenamiento de datos con SQL Server
Antes de que pueda crear y administrar bases de datos de manera efectiva, debe comprender cómo
se almacenan los datos en ellas, conocer los diferentes tipos de archivos que SQL Server puede
utilizar, dónde deben colocarse los archivos y aprender a planificar el crecimiento continuo de los
archivos.

1.1 Cómo se almacenan los datos en SQL Server


Las bases de datos de SQL Server consisten en un esquema lógico de tablas y otros objetos en los
que se utilizan estructuras de datos para organizar registros. Este esquema lógico se almacena
físicamente en un conjunto de archivos asignados a la base de datos para su uso, y los registros de
datos se escriben en páginas dentro de esos archivos.

1.1.1 Archivos de base de datos


SQL Server utiliza tres tipos de archivos de base de datos: archivos de datos primarios, archivos de
datos secundarios y archivos de registro de transacciones.

1.1.1.1 Archivos de datos primarios


El archivo de datos primario es el punto de partida de la base de datos. Cada base de datos tiene un
único archivo de datos primarios. Además de contener páginas de datos, el archivo de datos
primario contiene punteros a los otros archivos en la base de datos. Los archivos de datos primarios
suelen usar la extensión de archivo .mdf. El uso de esta extensión de archivo no es obligatorio, pero
es muy recomendable.

1.1.1.2 Archivos de datos secundarios


Los archivos de datos secundarios son archivos de datos adicionales opcionales definidos por el
usuario que se pueden usar para distribuir los datos en más ubicaciones de almacenamiento por
razones de rendimiento y / o mantenimiento. Puede usar archivos secundarios para distribuir datos
en varios discos colocando cada archivo en una unidad de disco diferente. Además, si una base de
datos excede el tamaño máximo para un solo archivo de Windows, puede usar archivos de datos
secundarios para que la base de datos pueda seguir creciendo. La extensión recomendada para
archivos de datos secundarios es .ndf.

1.1.1.3 Archivos de registro de transacciones


Los archivos de registro de transacciones (comúnmente denominados simplemente archivos de
registro) contienen información que puede usar para recuperar la base de datos cuando sea
necesario. Debe haber al menos un archivo de registro para cada base de datos. Todas las
transacciones se escriben en el archivo de registro utilizando el mecanismo de registro de escritura
anticipada (WAL, “write-ahead logging”) para garantizar la integridad de la base de datos en caso
de falla y para respaldar las reversiones de transacciones. La extensión recomendada para los
archivos de registro es .ldf.

Cuando las páginas de datos deben cambiarse, se recuperan en la memoria y se cambian allí. Las
"páginas sucias" se escriben en el registro de transacciones de forma síncrona. Más tarde, durante
un proceso en segundo plano conocido como "punto de control", las páginas sucias se escriben en
los archivos de la base de datos. Por esta razón, las páginas contenidas en el registro de
transacciones son críticas para la capacidad de SQL Server de recuperar la base de datos a un estado
comprometido conocido. Los registros de transacciones se analizan en detalle en este curso.

Nota: El archivo de registro también lo utilizan otras características de SQL Server, como la
replicación transaccional, la creación de reflejo de la base de datos y la captura de datos
modificados. Estos son temas avanzados y más allá del alcance de este curso.

1.1.2 Páginas y extensiones


Los archivos de datos almacenan datos en páginas, que se agrupan en extensiones.

1.1.2.1 Páginas de archivo de datos


Las páginas en un archivo de datos de SQL Server están numeradas secuencialmente, comenzando
con cero para la primera página. Cada archivo en una base de datos tiene un número de
identificación de archivo único. Para identificar de forma exclusiva una página en una base de datos,
se requieren tanto la ID del archivo como el número de página. Cada página tiene un tamaño de 8
KB. Después de permitir la información de encabezado que se necesita en cada página, queda una
región de 8.096 bytes restantes para almacenar datos. Las filas de datos pueden contener valores
de columna de longitud fija y longitud variable. Todas las columnas de longitud fija de una fila de
datos deben caber en una sola página, dentro de un límite de 8.060 bytes. Las páginas de datos solo
contienen datos de un único objeto de base de datos, como una tabla o un índice.

1.1.2.2 Extensiones
Los grupos de ocho páginas contiguas se denominan extensión. SQL Server usa extensiones para
simplificar la administración de páginas de datos. Hay dos tipos de extensiones:

• Extensiones uniformes. Todas las páginas dentro de la extensión contienen datos de un solo
objeto.
• Extensiones mixtas. Las páginas de la extensión pueden contener datos de diferentes
objetos.

La primera asignación para un objeto es a nivel de página, y siempre proviene de una extensión
mixta. Si están libres, otras páginas de la misma extensión mixta se asignarán al objeto según sea
necesario. Una vez que el objeto ha crecido más que su primera extensión, todas las asignaciones
futuras son de extensiones uniformes.

Tanto en los archivos de datos primarios como secundarios, se asigna un pequeño número de
páginas para rastrear el uso de extensiones en el archivo.

1.1.3 Consideraciones para dispositivos de almacenamiento en disco


Por lo general, un servidor de base de datos no tendrá suficientes discos internos para permitirle
entregar los niveles de rendimiento requeridos, por lo que muchos servidores usan una matriz
externa de discos para almacenar datos. En una matriz de discos, se combinan discos magnéticos y
/ o dispositivos de estado sólido para proporcionar redundancia y un rendimiento mejorado. Los
tipos de conjuntos de discos utilizados comúnmente incluyen:

• Almacenamiento adjunto directo (DAS)


Cuando se usa DAS, los discos se almacenan en un gabinete y se conectan al servidor
mediante un controlador RAID.
Puede usar el controlador para crear matrices RAID a partir de los discos DAS. El sistema
operativo Windows Server tratará cada matriz RAID como un volumen de almacenamiento,
tal como lo haría con un disco interno. Por lo general, un gabinete DAS contiene entre ocho
y 24 unidades. DAS ofrece muy buenos niveles de rendimiento, particularmente en términos
de rendimiento, y es relativamente económico. Sin embargo, DAS puede ser limitante
porque normalmente no puede compartir el almacenamiento entre varios servidores.
• Red de área de almacenamiento (SAN)
En una SAN, los discos se almacenan en gabinetes y se conectan mediante una red común.
La red puede ser una red Ethernet, como es el caso de las SAN SCSI de Internet (iSCSI), o una
red de canal de fibra. Los servidores se conectan al almacenamiento SAN a través de
adaptadores de bus host (HBA). Las SAN de canal de fibra generalmente ofrecen un mejor
rendimiento, pero son más caras que las SAN iSCSI. Aunque es más costoso que el DAS, el
principal beneficio de una SAN es que permite que el almacenamiento se comparta entre
servidores, lo cual es necesario para configuraciones como la agrupación de servidores. En
una SAN, es una práctica común garantizar que los componentes como HBA, puertos y
conmutadores estén duplicados. Esto elimina puntos únicos de falla y ayuda a mantener la
disponibilidad del servicio.
• Grupos de almacenamiento de Windows
En los grupos de almacenamiento de Windows, puede agrupar unidades en un grupo y luego
crear espacios de almacenamiento que son unidades virtuales. Esto le permite usar
hardware de almacenamiento de productos básicos para crear grandes espacios de
almacenamiento y agregar más unidades cuando la capacidad del grupo es baja. Puede
crear agrupaciones de almacenamiento desde discos duros internos y externos (incluidos
USB, SATA y SAS) y desde unidades de estado sólido.

1.1.4 Niveles RAID


Muchas soluciones de almacenamiento utilizan hardware RAID para proporcionar tolerancia a fallas
a través de la redundancia de datos y, en algunos casos, para mejorar el rendimiento. También
puede implementar RAID 0, RAID 1 y RAID 5 controlados por software utilizando el sistema
operativo Windows Server, y otros niveles pueden ser compatibles con SAN de terceros. Los tipos
de RAID comúnmente utilizados incluyen:

• RAID 0, bandas de disco. Un conjunto de bandas consiste en espacio de dos o más discos
que se combina en un solo volumen. Los datos se distribuyen de manera uniforme en todos
los discos, lo que mejora el rendimiento de E/S; particularmente cuando cada dispositivo de
disco tiene su propio controlador de hardware. RAID 0 no ofrece redundancia, y si falla un
solo disco, el volumen se vuelve inaccesible.
• RAID 1, duplicación de disco. Un conjunto espejo es un volumen de almacenamiento lógico
que se basa en el espacio de dos discos, con un disco que almacena una copia redundante
de los datos en el otro. La duplicación puede proporcionar un buen rendimiento de lectura,
pero el rendimiento de escritura puede verse afectado. RAID 1 es costoso en términos de
almacenamiento porque el 50 por ciento del espacio en disco disponible se usa para
almacenar datos redundantes.
• RAID 5, creación de bandas de disco con paridad. RAID 5 ofrece tolerancia a fallas mediante
el uso de datos de paridad que se escriben en todos los discos en un volumen dividido que
se compone de espacio de 3 o más discos. RAID 5 generalmente funciona mejor que RAID
1. Sin embargo, si falla un disco del conjunto, el rendimiento se degrada.
RAID 5 es menos costoso en términos de espacio en disco que RAID 1 porque los datos de
paridad solo requieren el equivalente de un disco en el conjunto para almacenarlo. Por
ejemplo, en una matriz de cinco discos, cuatro estarían disponibles para el almacenamiento
de datos, lo que representa el 80 por ciento del espacio total en disco.
• RAID 10, reflejo con bandas. En RAID 10, se refleja un conjunto de bandas RAID 0 sin
tolerancia a fallas. Esta disposición ofrece el excelente rendimiento de lectura / escritura de
RAID 0, combinado con la tolerancia a fallas de RAID 1. Sin embargo, RAID 10 puede ser
costoso de implementar porque, como RAID 1, el 50 por ciento del espacio total se usa para
almacenar datos redundantes.

Tenga en cuenta los siguientes puntos cuando planifique archivos en hardware RAID:

• En general, RAID 10 ofrece la mejor combinación de rendimiento de lectura / escritura y


tolerancia a fallas, pero es la solución más costosa.
• Las operaciones de escritura en RAID 5 a veces pueden ser relativamente lentas en
comparación con RAID 1 debido a la necesidad de calcular datos de paridad (RAID 5). Si tiene
una alta proporción de actividad de escritura, por lo tanto, RAID 5 podría no ser el mejor
candidato.
• Considere el costo por GB. Por ejemplo, implementar una base de datos de 500 GB en un
conjunto espejo RAID 1 requeriría (al menos) dos discos de 500 GB. Implementar la misma
base de datos en una matriz RAID 5 requeriría mucho menos espacio de almacenamiento.
• Muchas bases de datos usan una SAN, y las características de rendimiento pueden variar
entre los proveedores de SAN. Por esta razón, si usa una SAN, debe consultar con sus
proveedores para identificar la solución óptima para sus requisitos.
• Los espacios de almacenamiento de Windows le permiten crear soluciones de
almacenamiento RAID extensibles que utilizan discos básicos. Esta solución ofrece muchos
de los beneficios de una solución de hardware SAN especializada, a un costo
significativamente menor.
Determinación de la ubicación de los archivos y el número de archivos Cuando crea una base de
datos, debe decidir dónde almacenar los archivos de la base de datos. La elección de la ubicación de
almacenamiento para los archivos de la base de datos es extremadamente importante, ya que
puede tener un efecto significativo en el rendimiento, la resistencia, la capacidad de recuperación y
la capacidad de administración.

1.1.5 Aislamiento de datos y archivos de registro


Es importante aislar los archivos de registro y datos por motivos de rendimiento y recuperación.
Este aislamiento debe estar en el nivel del disco físico.

1.1.5.1 Patrones de acceso


Los patrones de acceso de los archivos de registro y datos son muy diferentes. El acceso a los datos
en los archivos de registro consiste principalmente en escrituras secuenciales y sincrónicas, con
acceso aleatorio ocasional al disco. El acceso a datos en archivos de datos ofrece
predominantemente acceso asíncrono de disco aleatorio a los archivos de datos desde la base de
datos. Un solo dispositivo de almacenamiento físico no tiende a proporcionar buenos tiempos de
respuesta cuando se combinan estos tipos de acceso a datos.

1.1.5.2 Recuperación
Si bien los volúmenes RAID brindan cierta protección contra fallas del dispositivo de
almacenamiento físico, aún pueden ocurrir fallas de volumen completas. Si se pierde un archivo de
datos de SQL Server, la base de datos se puede restaurar a partir de una copia de seguridad y el
registro de transacciones se puede volver a aplicar para recuperar la base de datos a un momento
reciente. Si se pierde un archivo de registro de SQL Server, la base de datos puede verse obligada a
recuperarse de los archivos de datos, con la posibilidad de alguna pérdida de datos o inconsistencia
en la base de datos. Sin embargo, si los archivos de datos y de registro están en un único subsistema
de disco que se pierde, las opciones de recuperación generalmente implican restaurar la base de
datos desde una copia de seguridad anterior y perder todas las transacciones desde ese momento.
El aislamiento de datos y archivos de registro puede ayudar a evitar los peores impactos de las fallas
del subsistema del disco.

Nota: Las soluciones de almacenamiento usan volúmenes lógicos como unidades de


almacenamiento, y un error común es colocar archivos de datos y archivos de registro en
diferentes volúmenes que en realidad se basan en los mismos dispositivos de
almacenamiento físico. Al aislar datos y archivos de registro, asegúrese de que los
volúmenes en los que almacena datos y archivos de registro se basen en dispositivos de
almacenamiento físico subyacentes separados.

1.2 Gestión de archivos de datos


Idealmente, todos los archivos de datos que se definen para una base de datos deben ser del mismo
tamaño. Los datos se distribuyen de manera uniforme en todos los archivos de datos disponibles.
Las principales ventajas de rendimiento de esto se obtienen cuando los archivos se distribuyen en
diferentes ubicaciones de almacenamiento.

La asignación de múltiples archivos de datos proporciona una serie de ventajas de gestión, que
incluyen:
• La posibilidad de mover archivos y parte de los datos más tarde.
• Una reducción en el tiempo de recuperación al restaurar por separado un archivo de base
de datos (por ejemplo, si solo una parte de los datos está corrupta).
• Un aumento en el paralelismo en el canal de E / S.
• La capacidad de tener bases de datos más grandes que el tamaño máximo de un solo archivo
de Windows.

1.2.1 Cantidad de archivos de registro


A diferencia de la forma en que SQL Server escribe en archivos de datos, el motor de base de datos
de SQL Server solo escribe en un único archivo de registro en cualquier momento. Los archivos de
registro adicionales solo se usan cuando no hay espacio disponible en el archivo de registro activo.

1.2.2 Garantizar suficiente capacidad de archivo


La planificación de capacidad ayuda a garantizar que sus bases de datos tengan acceso al espacio
requerido a medida que crecen. Calcular la tasa de crecimiento de la base de datos le permite
planificar los tamaños y el crecimiento de los archivos con mayor facilidad y precisión.

Cuando planifique la capacidad que necesitará, debe estimar el tamaño máximo de la base de datos,
los índices, el registro de transacciones y tempdb, a través de un período de crecimiento previsto.

Para la mayoría de los sitios, debe intentar crear archivos de base de datos que sean lo
suficientemente grandes como para manejar los datos que se espera que se almacenen en los
archivos durante un período de 12 meses. Si es posible, base la planificación de la capacidad en
pruebas con las aplicaciones reales que almacenarán datos en la base de datos. Si esto no es posible,
consulte al desarrollador o proveedor de la aplicación para determinar los requisitos de capacidad
de datos realistas.

1.2.3 Crecimiento automático versus crecimiento planificado


SQL Server puede expandir automáticamente una base de datos de acuerdo con los parámetros de
crecimiento que se definieron cuando se crearon los archivos de la base de datos. Si bien las
opciones de crecimiento automático deben estar habilitadas para evitar el tiempo de inactividad
cuando se produce un crecimiento inesperado, es importante evitar la necesidad de que SQL Server
crezca automáticamente los archivos. En cambio, debe controlar el crecimiento de los archivos a lo
largo del tiempo y asegurarse de que los archivos sean lo suficientemente grandes durante varios
meses o años.

A muchos administradores les preocupa que los archivos de bases de datos más grandes de alguna
manera aumenten el tiempo que lleva realizar copias de seguridad. El tamaño de una copia de
seguridad de SQL Server no está relacionado directamente con el tamaño de los archivos de la base
de datos, ya que solo se realiza una copia de seguridad de las páginas que realmente contienen
datos.

Un problema importante que surge con el crecimiento automático es una compensación


relacionada con el tamaño de los incrementos de crecimiento. Si se especifica un gran incremento,
se puede experimentar un retraso significativo en la ejecución de la instrucción Transact-SQL que
desencadena la necesidad de crecimiento. Si el incremento especificado es demasiado pequeño, el
sistema de archivos puede fragmentarse mucho y el rendimiento de la base de datos puede verse
afectado porque los archivos de datos se han asignado en pequeños fragmentos en todo un
subsistema de disco.

1.2.4 Planificación del crecimiento del archivo de registro


Si el registro de transacciones no está configurado para expandirse automáticamente, pronto puede
quedarse sin espacio cuando ocurren ciertos tipos de actividad en la base de datos. Por ejemplo,
realizar operaciones masivas a gran escala, como la importación masiva o la creación de índices,
puede hacer que el registro de transacciones se llene rápidamente.

Además de expandir el tamaño del registro de transacciones, también puede truncar un archivo de
registro. Truncar el registro purga el archivo de transacciones inactivas, confirmadas y permite que
el motor de la base de datos de SQL Server reutilice esta parte del registro de transacciones. Sin
embargo, debe tener cuidado al truncar el registro de transacciones, ya que esto puede afectar la
capacidad de recuperación de la base de datos en caso de falla. En general, el truncamiento de
registros se gestiona como parte de una estrategia de copia de seguridad.
2 Gestión de almacenamiento para bases de datos del sistema
SQL Server utiliza las bases de datos de sistema para mantener los metadatos internos. Los
administradores de bases de datos deben estar familiarizados con las bases de datos del sistema
SQL Server y cómo administrarlas.

2.1 Bases de datos del sistema SQL Server


Además de las bases de datos de usuario, una instancia de SQL Server siempre contiene cinco bases
de datos del sistema: marter, msdb, model, tempdb y resources. Estas bases de datos contienen
metadatos importantes que SQL Server utiliza internamente y no puede descartar ninguno de ellos.

2.1.1 Master
La base de datos master contiene toda la información del sistema. Todo lo que se define en el nivel
de instancia del servidor generalmente se almacena en la base de datos maestra. Si la base de datos
maestra está dañada o dañada, SQL Server no se iniciará, por lo que es imprescindible realizar una
copia de seguridad de forma regular.

2.1.2 msdb
La base de datos msdb contiene información sobre las tareas de mantenimiento de la base de datos
y, en particular, contiene información utilizada por el Agente SQL Server para la automatización del
mantenimiento, incluidos trabajos, operadores y alertas. También es importante realizar una copia
de seguridad de la base de datos msdb con regularidad para garantizar que no se pierdan trabajos,
programaciones, historial de copias de seguridad, restauraciones y planes de mantenimiento. En
versiones anteriores de SQL Server, los paquetes de SQL Server Integration Services (SSIS) a
menudo se almacenaban en la base de datos msdb. En SQL Server 2014, debe almacenarlos en la
base de datos dedicada del catálogo SSIS.

2.1.3 Model
La base de datos model es la plantilla en la que se establecen todas las bases de datos de usuarios.
Cualquier base de datos nueva utiliza la base de datos modelo como plantilla. Si crea algún objeto
en la base de datos modelo, estará presente en todas las bases de datos nuevas en la instancia del
servidor. Muchos sitios nunca modifican la base de datos modelo. Tenga en cuenta que, aunque la
base de datos modelo no parece demasiado importante, SQL Server no se iniciará si la base de datos
modelo no está presente.

2.1.4 tempdb
La base de datos tempdb contiene datos temporales. SQL Server trunca o crea esta base de datos
cada vez que se inicia, por lo que no es necesario realizar una copia de seguridad. De hecho, no hay
opción para realizar una copia de seguridad de la base de datos tempdb.

2.1.5 Resources
La base de datos resoures es una base de datos oculta de solo lectura que contiene objetos del
sistema asignados al esquema sys en cada base de datos. Esta base de datos también contiene todos
los procedimientos almacenados del sistema, vistas del sistema y funciones del sistema. En las
versiones de SQL Server anteriores a SQL Server 2005, estos objetos se definieron en la base de
datos maestra.
2.2 Mover bases de datos del sistema
Todas las bases de datos del sistema, excepto la base de datos resoirces, se pueden mover a nuevas
ubicaciones para ayudar a equilibrar la carga de E/S. Sin embargo, debe enfocarse en mover las
bases de datos del sistema con precaución, ya que, si esto se realiza incorrectamente, es posible
detener el funcionamiento de SQL Server.

2.2.1 Mover las bases de datos msdb, model y tempdb


Para mover las bases de datos msdb, model y tempdb, realice los siguientes pasos:

1. Para cada archivo que se moverá, ejecute la instrucción ALTER DATABASE ... MODIFY FILE.
2. Detenga la instancia de SQL Server.
3. Mueva los archivos a la nueva ubicación (este paso no es necesario para tempdb, ya que
sus archivos se recrean automáticamente al inicio)
4. Reinicie la instancia de SQL Server.

2.2.1.1 Mover la base de datos maestra


El proceso para mover la base de datos maestra es diferente del proceso para otras bases de datos.
Para mover la base de datos maestra, realice los siguientes pasos:

1. Abra el Administrador de configuración de SQL Server.


2. En el nodo Servicios de SQL Server, haga clic con el botón derecho en la instancia de SQL
Server, haga clic en Propiedades y luego en la pestaña Parámetros de inicio.
3. Edite los valores de los Parámetros de inicio para apuntar a la ubicación planificada para los
datos de la base de datos maestra (parámetro -d) y los archivos de registro (parámetro -l).
4. Detenga la instancia de SQL Server.
5. Mueva los archivos master.mdf y mastlog.ldf a la nueva ubicación.
6. Reinicie la instancia de SQL Server.

2.2.1.2 Consideraciones para tempdb


El rendimiento de la base de datos tempdb es crítico para el rendimiento general de la mayoría de
las instalaciones de SQL Server. La base de datos consta de los siguientes objetos:

• objetos internos
SQL Server utiliza los objetos internos para sus propias operaciones. Incluyen tablas de
trabajo para operaciones de cursor o spool, almacenamiento temporal de objetos grandes,
archivos de trabajo para operaciones hash join o hash agregados, y resultados de
clasificación intermedios.
• Versiones de fila
Las transacciones que están asociadas con niveles de aislamiento de transacciones
relacionadas con instantáneas pueden hacer que se mantengan brevemente versiones
alternativas de filas en un almacén especial de versiones de fila dentro de tempdb. Las
versiones de fila también pueden ser producidas por otras características, como
reconstrucciones de índices en línea, Conjuntos de resultados activos múltiples (MARS) y
desencadenantes.
• Objetos de usuario
La mayoría de los objetos que residen en la base de datos tempdb son generados por el
usuario y consisten en tablas temporales, variables de tabla, conjuntos de resultados de
funciones con valores de tabla de varias instrucciones y otros conjuntos de filas temporales.

2.2.1.3 Planificación de ubicación y tamaño tempdb


De manera predeterminada, los archivos de datos y registro para tempdb se almacenan en la misma
ubicación que los archivos para todas las demás bases de datos del sistema. Si su instancia de SQL
Server debe admitir cargas de trabajo de base de datos que hacen un uso extensivo de objetos
temporales, debe considerar mover tempdb a un volumen dedicado para evitar la fragmentación
de los archivos de datos y establecer su tamaño inicial en función de la cantidad que probablemente
se utilizará. Puede dejar el crecimiento automático habilitado, pero establezca que el incremento
de crecimiento sea bastante grande para garantizar que el rendimiento no se vea interrumpido por
el crecimiento frecuente de tempdb. Puede elegir la ubicación de los archivos tempdb durante la
instalación, y puede moverlos más tarde si es necesario.

Debido a que tempdb se usa para muchos propósitos, es difícil predecir su tamaño requerido de
antemano. Debe probar y monitorear cuidadosamente los tamaños de su base de datos tempdb en
escenarios de la vida real para nuevas instalaciones. Quedarse sin espacio en disco en la base de
datos tempdb puede causar interrupciones significativas en el entorno de producción de SQL Server
y evitar que las aplicaciones que se ejecutan completen sus operaciones. Puede usar la vista de
administración dinámica sys.dm_db_file_space_usage para monitorear el espacio en disco que
usan los archivos. Además, para supervisar la asignación de páginas o la actividad de des asignación
en tempdb a nivel de sesión o tarea, puede usar las vistas de administración dinámica
sys.dm_db_session_space_usage y sys.dm_db_task_space_usage.

De manera predeterminada, la base de datos tempdb crece automáticamente a medida que se


requiere espacio porque el MAXSIZE de los archivos está establecido en ILIMITADO. Por lo tanto,
tempdb puede continuar creciendo hasta que se agote el espacio en el disco que lo contiene.

2.2.2 Usando múltiples archivos


Aumentar la cantidad de archivos en tempdb puede superar las restricciones de E/S y evitar la
contención de pestillos durante los escaneos de espacio libre de página (PFS) a medida que se crean
y eliminan objetos temporales, lo que resulta en un rendimiento general mejorado. Sin embargo,
no cree demasiados archivos, ya que esto puede degradar el rendimiento. Como regla general, se
recomienda tener un archivo de 0.25-1 por núcleo, con una proporción menor a medida que
aumenta el número de núcleos en el sistema. Sin embargo, la configuración óptima solo se puede
identificar haciendo pruebas reales en vivo.

2.3 Demostración: mover archivos tempdb


En esta demostración, verá cómo:

• Mover archivos tempdb.

Pasos de demostración

Mover archivos tempdb


1. Asegúrese de que la máquina virtual SQLSERVER se está ejecutando e inicie sesión como
.\SQLAdmin con la contraseña Passw0rd.
2. Debe contar con la unidad T disponible.
3. En la carpeta D:\Demofles\Mod03, ejecute Setup.cmd como Administrador.
4. Inicie SQL Server Management Studio y conéctese al motor de base de datos SQLSERVER
utilizando la autenticación de Windows.
5. En el Explorador de objetos, expanda Bases de datos, expanda Bases de datos del sistema y
luego haga clic con el botón derecho en tempdb y haga clic en Propiedades.
6. En el cuadro de diálogo Propiedades de la base de datos, en la página Archivos, anote los
archivos actuales y su ubicación. Luego haga clic en Cancelar.
7. Abra el archivo de script MovingTempdb.sql en la carpeta D:\Demofiles\Mod03.
8. Vea el código en el script y luego haga clic en Ejecutar. Tenga en cuenta el mensaje que se
muestra después de que se haya ejecutado el código.
9. Vea el contenido de T:\ y observe que no se han creado archivos en esa ubicación, porque
el servicio de SQL Server aún no se ha reiniciado.
10. En el Explorador de objetos, haga clic con el botón derecho en SQLSERVER y haga clic en
Reiniciar. Cuando se le solicite permitir cambios, reiniciar el servicio y detener el servicio del
Agente SQL Server dependiente, haga clic en Sí.
11. Vea el contenido de T:\ y observe que los archivos tempdb.mdf y tempdb.ldf se han movido
a esta ubicación.
12. Mantenga abierto SQL Server Management Studio para la próxima demostración.
3 Gestión de almacenamiento para bases de datos de usuario
Las bases de datos de usuario no pertenecen al sistema y son utilizadas para las aplicaciones. Crear
bases de datos es una competencia central para los administradores de bases de datos que trabajan
con SQL Server. Además de comprender cómo crearlos, debe ser consciente del impacto de las
opciones de inicialización de archivos y saber cómo modificar las bases de datos existentes.

Al crear bases de datos, también debe considerar dónde se almacenarán los datos y los registros en
el sistema de archivos. También es posible que desee cambiar esto o proporcionar almacenamiento
adicional cuando la base de datos esté en uso.

Cuando las bases de datos se hacen más grandes, es necesario asignar los datos a diferentes
volúmenes, en lugar de almacenarlos en un solo volumen de disco grande. Esta asignación de datos
se configura mediante grupos de archivos y se utiliza para abordar tanto el rendimiento como las
necesidades de gestión continua dentro de las bases de datos.

3.1 Crear bases de datos de usuario


Puede crear bases de datos utilizando la interfaz de usuario en SQL Server Management Studio
(SSMS) o el comando CREATE DATABASE en Transact-SQL. El comando CREATE DATABASE ofrece
opciones más flexibles, pero la interfaz de usuario puede ser más fácil de usar. Este tema se
concentrará en usar el comando CREATE DATABASE, pero la información es igualmente aplicable a
las opciones disponibles en la interfaz de usuario en SSMS.

3.1.1 CREAR BASE DE DATOS


Los nombres de las bases de datos deben ser únicos dentro de una instancia de SQL Server y cumplir
con las reglas para los identificadores. Un nombre de base de datos es del tipo de datos sysname,
que se define como nvarchar (128). Esto significa que pueden estar presentes hasta 128 caracteres
en el nombre de la base de datos y que cada carácter se puede elegir del conjunto de caracteres
Unicode de doble byte. Si bien los nombres de las bases de datos pueden ser bastante largos,
encontrará que es difícil trabajar con ellos.

3.1.1.1 Archivos de información


Como se discutió anteriormente en este módulo, una base de datos debe tener un único archivo de
datos primarios y un archivo de registro. Las cláusulas ON y LOG ON del comando CREATE DATABASE
especifican el nombre y la ruta a utilizar.

En el siguiente código, se está creando una base de datos llamada Sales, que consta de dos archivos:
un archivo de datos primario ubicado en M:\Data\Sales.mdf y un archivo de registro ubicado en L:\
Logs\Sales.ldf:

Usando la instrucción CREATE DATABASE


CREATE DATABASE Sales
ON
(NAME = Sales_dat,
FILENAME = 'M:\Data\Sales.mdf', SIZE = 100MB, MAXSIZE = 500MB, FILEGROWTH = 20%)
LOG ON
(NAME = Sales_log,
FILENAME = 'L:\Logs\Sales.ldf', SIZE = 20MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10MB);
Cada archivo incluye un nombre de archivo lógico, así como una ruta de archivo física. Debido a que
las operaciones en SQL Server usan el nombre de archivo lógico para hacer referencia al archivo, el
nombre del archivo lógico debe ser único dentro de cada base de datos.

En este ejemplo, el archivo de datos primario tiene un tamaño de archivo inicial de 100 MB y un
tamaño de archivo máximo de 500 MB.

Crecerá en un 20 por ciento de su tamaño actual cuando sea necesario que ocurra el crecimiento
automático. El archivo de registro tiene un tamaño de archivo inicial de 20 MB y no tiene límite en
el tamaño máximo de archivo. Cada vez que necesite crecer automáticamente, crecerá en una
asignación fija de 10 MB.

3.1.2 Intercalaciones y valores predeterminados


Si es necesario, se puede asignar una clasificación específica a nivel de la base de datos. Si no se
especifica una intercalación, se establecerá de manera predeterminada la intercalación que se
especificó para la instancia del servidor durante la instalación de SQL Server. Mantener bases de
datos individuales con la misma clasificación que el servidor se considera una práctica recomendada.

Si bien es posible crear una base de datos al proporcionar solo el nombre de la base de datos, esto
da como resultado una base de datos que se basa en la base de datos modelo, con los datos y los
archivos de registro en las ubicaciones predeterminadas, que es poco probable que sea la
configuración que necesita.

3.1.3 Eliminar bases de datos


Para eliminar (o "soltar") una base de datos, haga clic con el botón derecho en el Explorador de
objetos y haga clic en Eliminar o use la instrucción Transact-SQL DROP DATABASE. Al eliminar una
base de datos, también se eliminan automáticamente todos sus archivos.

El siguiente ejemplo de código elimina la base de datos Sales:


DROP DATABASE Sales;
3.2 Configurar opciones de base de datos
Cada base de datos tiene un conjunto de opciones que puede configurar. Estas opciones son
exclusivas de cada base de datos y cambiarlas para una base de datos no afectará a ninguna otra.
Todas las opciones de la base de datos se establecen inicialmente desde la configuración de la base
de datos Model cuando se crea la base de datos. Puede cambiarlos utilizando la cláusula SET de la
instrucción ALTER DATABASE o utilizando la página Propiedades para cada base de datos en SSMS.

3.2.1 Categorías de opciones


Hay varias categorías de opciones de base de datos:

• Opciones automáticas. Controlar ciertos comportamientos automáticos. Como pauta


general, el cierre automático y la reducción automática deben estar desactivados en la
mayoría de los sistemas, pero las estadísticas de creación automática y las estadísticas de
actualización automática deben estar activadas.
• Opciones de cursor. Controlar el comportamiento y el alcance del cursor. En general, no se
recomienda el uso de cursores cuando se trabaja con SQL Server, aparte de aplicaciones
particulares como utilidades. Los cursores no se discuten más en este curso, pero debe
tenerse en cuenta que su uso excesivo es una causa común de problemas de rendimiento.
• Opciones de disponibilidad de la base de datos. Controle si la base de datos está en línea
o fuera de línea, quién puede conectarse a ella y si está o no en modo de solo lectura.
• Opciones de mantenimiento y recuperación.
 Modelo de recuperación. Los modelos de recuperación de bases de datos se
analizarán en el Módulo 4 de este curso.
 Página verificar. Las primeras versiones de SQL Server ofrecían una opción llamada
Detección de página rota. Esta opción hizo que SQL Server escribiera un pequeño
mapa de bits en cada sector de unidad de disco dentro de una página de base de
datos. Hay 512 bytes por sector, lo que significa que hay 16 sectores por página de
base de datos (8 KB).
Esta era una forma bastante cruda pero razonablemente efectiva de detectar una
situación en la que solo algunos de los sectores requeridos para escribir una página
estaban escritos. En SQL Server 2005, se agregó una nueva opción de verificación
CHECKSUM. El uso de esta opción hace que SQL Server calcule y agregue una suma
de verificación a cada página a medida que se escribe y vuelva a verificar la suma
de verificación cada vez que se recupera una página del disco.

Nota: Las sumas de verificación de página solo se agregan la próxima vez que se escribe una
página. Habilitar la opción no hace que todas las páginas de la base de datos se reescriban
con una suma de verificación.

3.3 Demostración: creación de bases de datos


En esta demostración, verá cómo:

• Crear una base de datos utilizando SQL Server Management Studio.


• Cree una base de datos utilizando la instrucción CREATE DATABASE.

Pasos de demostración

Crear una base de datos con SQL Server Management Studio

1. Asegúrese de haber completado la demostración anterior. De lo contrario, inicie el equipo


SQLSERVER y ejecute D:\Demofiles\Mod03\Setup. cmd como administrador.
2. Si SQL Server Management Studio no está abierto, inícielo y conéctese al motor de base de
datos SQLSERVER utilizando la autenticación de Windows.
3. En el Explorador de objetos, haga clic con el botón derecho en Bases de datos y haga clic
en Nueva base de datos.
4. En el cuadro Nombre de la base de datos, escriba DemoDB1.
5. En la lista “archivos de la base de datos”, tenga en cuenta los nombres lógicos
predeterminados, el tamaño inicial y la configuración de crecimiento automático. Luego
cambie la ruta y el nombre de archivo escribiendo los siguientes valores:
 DemoDB1
 Ruta: M:\Datos\
 Nombre de archivo: DemoDB1.mdf
 DemoDB1_log
 Ruta: L:\Logs\
 Nombre de archivo: DemoDB1.ldf
6. Haga clic en Aceptar para crear la nueva base de datos.
7. Expanda la carpeta Bases de datos y luego haga clic con el botón derecho en DemoDB1 y
haga clic en Propiedades.
8. En la pestaña Opciones, revise las opciones de la base de datos. Luego haga clic en Cancelar.

Crear una base de datos utilizando la instrucción CREATE DATABASE

1. En SQL Server Management Studio, abra el archivo de script CreatedDatabases.sql desde


la carpeta d:\Demofiles\Mod03.
2. Seleccione el código debajo del comentario Crear una base de datos y haga clic en Ejecutar
para crear una base de datos llamada DemoDB2.
3. Seleccione el código debajo del comentario Ver información de la base de datos y haga clic
en Ejecutar. Luego vea la información que se devuelve.
4. Mantenga abierto SQL Server Management Studio para la próxima demostración.

3.4 Modificar bases de datos de usuario


Es posible que deba modificar una base de datos cuando esté en uso, por ejemplo, es posible que
deba cambiar el nombre o las opciones. Puede realizar tales modificaciones utilizando la instrucción
ALTER DATABASE o utilizando SSMS. Puede usar la instrucción ALTER DATABASE para modificar los
archivos y grupos de archivos de una base de datos, las opciones y los niveles de compatibilidad.

3.4.1 Modificar las opciones de la base de datos


Puede modificar las opciones de la base de datos utilizando la instrucción ALTER DATABASE SET,
especificando el nombre de la opción y, cuando corresponda, el valor a utilizar.

Por ejemplo, puede configurar una base de datos para “solo lectura” o “lectura y escritura”.
ALTER database ... SET <opción>
ALTER DATABASE HistóricoVentas
SET READ_ONLY;
Nota: Muchas de las opciones de conjunto de base de datos que configura utilizando la
instrucción ALTER DATABASE se pueden anular mediante una opción de conjunto de nivel
de sesión. Esto permite a los usuarios o aplicaciones ejecutar una instrucción SET para
configurar la configuración solo para la sesión actual. Lectura adicional: para obtener más
información sobre las opciones del conjunto de bases de datos, vea ALTER DATABASE SET
Options (Transact-SQL) en los Libros en pantalla de SQL Server.

3.4.2 Cambiar las opciones de compatibilidad de la base de datos


Si desea que su base de datos sea compatible con una versión específica de SQL Server, puede usar
la opción SET COMPATIBILITY_LEVEL con la instrucción ALTER DATABASE. Puede configurar la
compatibilidad con SQL Server 2000 y versiones posteriores.

El valor que especifique para el nivel de compatibilidad define con qué versiones anteriores debería
ser compatible.
ALTER DATABASE ... SET COMPATIBILITY_LEVEL
ALTER DATABASE Ventas
SET COMPATIBILITY_LEVEL = 100;
Los valores que puede usar se describen en la siguiente tabla:

3.5 Administrar archivos de base de datos


Es posible que deba modificar la estructura de una base de datos cuando esté en funcionamiento.
El requisito más común es agregar espacio adicional expandiendo los archivos existentes o
agregando archivos adicionales. Es posible que también deba soltar un archivo. SQL Server no le
permitirá soltar un archivo que esté actualmente en uso en la base de datos. Soltar un archivo es un
proceso de dos pasos: primero, el archivo debe vaciarse y luego puede eliminarse.

3.5.1 Agregar espacio a una base de datos


De manera predeterminada, SQL Server expande automáticamente una base de datos de acuerdo
con los parámetros de crecimiento que usted define cuando crea los archivos de la base de datos.
También puede expandir manualmente una base de datos asignando espacio adicional a un archivo
de base de datos existente o creando un nuevo archivo. Es posible que tenga que expandir los datos
o el espacio de registro de transacciones si los archivos existentes se están llenando.

Si una base de datos ya ha agotado el espacio asignado y no puede hacer crecer un archivo de datos
automáticamente, se genera el error 1105. (El número de error equivalente para la imposibilidad de
hacer crecer un archivo de registro de transacciones es 9002). Esto puede suceder si la base de datos
no está configurada para crecer automáticamente o si no hay suficiente espacio en disco en el disco
duro.

3.5.1.1 Agregar archivos


Una opción para expandir el tamaño de una base de datos es agregar archivos. Puede hacerlo
utilizando SSMS o utilizando la instrucción ALTER DATABASE ... ADD FILE.

3.5.1.2 Archivos desplegables


Al expandir una base de datos, debe aumentar su tamaño en al menos 1 MB. Idealmente, cualquier
aumento de tamaño de archivo debería ser mucho mayor que esto. Los aumentos de 100 MB o más
son comunes.

Cuando expande una base de datos, el nuevo espacio se pone inmediatamente a disposición de los
datos o del archivo de registro de transacciones, según el archivo que se haya expandido. Cuando
expande una base de datos, debe especificar el tamaño máximo al que se permite que crezca el
archivo. Esto evita que el archivo crezca hasta que se agote el espacio en disco. Para especificar un
tamaño máximo para el archivo, use el parámetro MAXSIZE de la instrucción ALTER DATABASE, o
use la opción Restringir crecimiento de archivo (MB) cuando use el cuadro de diálogo Propiedades
en SSMS para expandir la base de datos.

3.5.2 Registro de transacciones


Si el registro de transacciones no está configurado para expandirse automáticamente, puede
quedarse sin espacio cuando ocurren ciertos tipos de actividad en la base de datos. Además de
expandir el tamaño del registro de transacciones, el archivo de registro se puede truncar. Truncar
el registro purga el archivo de transacciones inactivas y confirmadas y permite que el motor de la
base de datos de SQL Server reutilice esta parte no utilizada del registro de transacciones. Si hay
transacciones activas, es posible que el archivo de registro no se pueda truncar y expandirlo puede
ser la única opción disponible.

3.5.3 Eliminar archivos de base de datos


Antes de eliminar un archivo de base de datos, debe estar vacío. Puede vaciar el archivo utilizando
la opción EMPTYFILE del comando DBCC SHRINKFILE y luego eliminar el archivo utilizando la
instrucción ALTER DATABASE.

3.5.4 Reducción de una base de datos


Puede reducir el tamaño de los archivos en una base de datos eliminando las páginas no utilizadas.
Aunque el motor de la base de datos reutilizará el espacio de manera efectiva, hay momentos en
que un archivo ya no necesita ser tan grande como lo era antes. Reducir el archivo puede ser
necesario, pero debe considerarse una opción poco utilizada. Puede reducir tanto los archivos de
registro de datos como de transacciones; esto puede hacerse manualmente, ya sea en grupo o
individualmente, o puede configurar la base de datos para que se reduzca automáticamente a
intervalos específicos.
3.5.4.1 Métodos para reducir
Puede reducir una base de datos o archivos de bases de datos específicos utilizando los comandos
DBCC SHRINKDATABASE y DBCC SHRINKFILE. Se prefiere el DBCC SHRINKFILE ya que proporciona
mucho más control de la operación que DBCC SHRINKDATABASE.

Nota: Reducir un archivo generalmente implica mover páginas dentro de los archivos, lo que
puede llevar mucho tiempo. La reducción regular de los archivos tiende a generar un nuevo
crecimiento de los archivos. Por esta razón, a pesar de que SQL Server proporciona una
opción para reducir automáticamente las bases de datos, esto solo debe usarse raramente.
Como en la mayoría de las bases de datos, habilitar esta opción causará problemas de
fragmentación sustanciales en el subsistema de disco. Se recomienda realizar solo
operaciones de reducción si es absolutamente necesario.

3.5.4.2 TRUNCATE_ONLY
TRUNCATE_ONLY es una opción adicional de DBCC SHRINKFILE que libera todo el espacio libre al
final del archivo al sistema operativo, pero no realiza ningún movimiento de página dentro del
archivo. El archivo de datos se reduce solo hasta la última extensión asignada. Esta opción a menudo
no reduce el archivo de manera tan efectiva como una operación estándar DBCC SHRINKFILE, pero
es menos probable que cause una fragmentación sustancial y es mucho más rápido.

3.6 Introducción a los grupos de archivos


Como ha visto en este capítulo, las bases de datos constan de al menos dos archivos: un archivo de
datos primario y un archivo de registro. Para mejorar el rendimiento y la capacidad de
administración de grandes bases de datos, puede agregar archivos secundarios.

Los archivos de datos siempre se definen dentro de un grupo de archivos. Los grupos de archivos
son colecciones de archivos de datos que puede usar para simplificar la colocación de datos y las
tareas administrativas, como las operaciones de copia de seguridad y restauración. El uso de grupos
de archivos también puede mejorar el rendimiento de la base de datos en algunos escenarios, ya
que le permiten distribuir objetos de la base de datos, como tablas, en múltiples volúmenes de
almacenamiento.

Cada base de datos tiene un grupo de archivos primario (llamado PRIMARIO), y cuando agrega
archivos de datos secundarios a la base de datos, se convierten automáticamente en parte del grupo
de archivos primario, a menos que especifique un grupo de archivos diferente.

Cuando planee usar grupos de archivos, considere los siguientes hechos:

• Los archivos de la base de datos solo pueden pertenecer a un grupo de archivos.


• Un grupo de archivos solo puede ser usado por una base de datos.

3.6.1 Uso de grupos de archivos para la capacidad de administración de datos


Puede usar grupos de archivos para controlar la ubicación de los datos según las consideraciones de
administración. Por ejemplo, si una base de datos contiene tablas de datos de solo lectura, puede
colocar estas tablas en un grupo de archivos dedicado que esté configurado como de solo lectura.

Además, puede hacer copias de seguridad y restaurar archivos y grupos de archivos


individualmente. Esto le permite lograr tiempos de copia de seguridad más rápidos porque solo
necesita hacer una copia de seguridad de los archivos o grupos de archivos que han cambiado, en
lugar de hacer una copia de seguridad de toda la base de datos. Del mismo modo, puede lograr
eficiencias cuando se trata de restaurar datos.

SQL Server también admite copias de seguridad parciales. Una copia de seguridad parcial le permite
hacer una copia de seguridad por separado de los grupos de archivos de solo lectura y lectura /
escritura. Luego, puede usar estas copias de seguridad para realizar una restauración gradual, que
le permite restaurar grupos de archivos individuales uno por uno, y volver a poner la base de datos
en línea grupo de archivos por grupo de archivos.

3.6.2 Uso de grupos de archivos para el rendimiento


Cuando crea tablas, puede especificar un grupo de archivos para los datos de la tabla. Si no
especifica un grupo de archivos, se utilizará el grupo de archivos predeterminado. El grupo de
archivos predeterminado es el grupo de archivos principal, a menos que configure un grupo de
archivos diferente como predeterminado. Al crear tablas en grupos de archivos específicos, puede
aislar tablas con acceso excesivo de otras tablas, reduciendo la contención y aumentando el
rendimiento.

Cuando un grupo de archivos contiene varios archivos, SQL Server puede escribir en todos los
archivos simultáneamente, y los completa utilizando una estrategia de relleno proporcional. Los
archivos que tienen el mismo tamaño tendrán la misma cantidad de datos escritos, asegurando que
se llenen a una velocidad constante. Los archivos de diferentes tamaños tendrán diferentes
cantidades de datos escritos para garantizar que se llenen a una velocidad proporcionalmente
consistente. El hecho de que SQL Server pueda escribir en archivos de grupos de archivos
simultáneamente le permite usar un grupo de archivos para implementar una forma simple de
trazado de bandas. Puede crear un grupo de archivos que contenga dos o más archivos, cada uno
de los cuales está en un disco separado. Cuando SQL Server escribe en el grupo de archivos, puede
usar el canal de E / S por separado para cada disco simultáneamente, lo que resulta en tiempos de
escritura más rápidos.

Nota: En general, debe usar grupos de archivos principalmente para mejorar la capacidad
de administración y confiar en la configuración del dispositivo de almacenamiento para el
rendimiento de E / S. Sin embargo, cuando un volumen de almacenamiento dividido no está
disponible, el uso de un grupo de archivos para distribuir archivos de datos entre discos
físicos puede ser una alternativa efectiva.

3.6.3 Crear y administrar grupos de archivos


Como administrador de la base de datos, es posible que deba administrar grandes bases de datos
que contienen grandes cantidades de archivos. La creación y administración de grupos de archivos
hace que sea más fácil controlar el almacenamiento físico de los archivos de la base de datos y le
permite mantener archivos con capacidad de administración similar o requisitos de acceso juntos.

3.6.3.1 Crear grupos de archivos


Puede crear grupos de archivos adicionales y asignarles archivos a medida que crea una base de
datos, o puede agregar nuevos grupos de archivos y archivos a una base de datos existente.
En el siguiente ejemplo de código, la base de datos de Sales incluye un grupo de archivos primario
que contiene un solo archivo llamado sales.mdf, un grupo de archivos llamado Transactions que
contiene dos archivos llamados sales_tran1.ndf y sales_tran2.ndf, y un grupo de archivos llamado
Archive que contiene dos archivos llamados sales_archive1.ndf y sales_archive2.ndf.

Crear una base de datos con múltiples grupos de archivos


CREATE DATABASE Sales
ON PRIMARY
(NAME = 'Sales', FILENAME = 'D:\Data\sales.mdf', SIZE = 5MB, FILEGROWTH = 1MB),
FILEGROUP Transactions
(NAME = 'SalesTrans1', FILENAME = 'M:\Data\sales_tran1.ndf', SIZE = 50MB, FILEGROWTH = 10MB),
(NAME = 'SatesTrans2', FILENAME = 'N:\Data\sales_tran2.ndf', SIZE = 50MB, FILEGROWTH = 10MB),
FILEGROUP Archive
(NAME = 'HistoricData1', FILENAME = 'O:\Data\sales_archive1.ndf', SIZE = 200MB, FILEGROWTH = 10MB),
(NAME = 'HistoricData2', FILENAME = 'P:\Data\sales_archive2.ndf', SIZE = 200MB, FILEGROWTH = 10MB)
LOG ON
(NAME = 'Sales_log', FILENAME = 'L:\Logs\sales.ldf', SIZE = 10MB , FILEGROWTH = 1MB);

Para agregar grupos de archivos a una base de datos existente, puede usar la instrucción ALTER
DATABASE ... ADD FILEGROUP. Luego puede usar la instrucción ALTER DATABASE ... ADD FILE para
agregar archivos al nuevo grupo de archivos.

3.6.3.2 Establecer el grupo de archivos predeterminado


A menos que especifique lo contrario, el grupo de archivos primario es el grupo de archivos
predeterminado para las bases de datos. Cualquier objeto creado sin una cláusula explícita ON
<filegroup> se crea en el grupo de archivos predeterminado. Una práctica recomendada es utilizar
el grupo de archivos primario para los objetos internos del sistema (que se crean automáticamente
con la base de datos) y agregar un grupo de archivos secundario para los objetos del usuario. Si
adopta esta práctica, debe hacer que el grupo de archivos secundario sea el grupo de archivos
predeterminado para la base de datos. Puede hacerlo modificando las propiedades de la base de
datos en SSMS o utilizando la instrucción ALTER DATABASE ... MODIFY FILEGROUP.

El siguiente ejemplo de código cambia el grupo de archivos predeterminado en la base de datos de


Ventas al grupo de archivos Transacciones:

Cambiar el grupo de archivos predeterminado


ALTER DATABASE Sales
MODIFY FILEGROUP Transactions DEFAULT;

3.6.3.3 Uso de grupos de archivos de solo lectura


Cuando una base de datos contiene una mezcla de lectura / escritura y datos de solo lectura, puede
usar grupos de archivos de solo lectura para almacenar tablas que contienen datos que no se
modificarán. Este enfoque es particularmente útil en grandes bases de datos, como almacenes de
datos, ya que le permite emplear una estrategia de respaldo que incluye un solo respaldo de datos
de solo lectura y respaldos regulares que incluyen solo datos volátiles.
Para hacer un grupo de archivos de solo lectura, use la instrucción ALTER DATABASE ... MODIFY
FILEGROUP con la opción READONLY.

El siguiente ejemplo de código hace que el grupo de archivos Archive sea de solo lectura:

Hacer un grupo de archivos de solo lectura


ALTER DATABASE Sales
MODIFY FILEGROUP Archive READONLY;

Para que un grupo de archivos de solo lectura sea editable, use la instrucción ALTER DATABASE ...
MODIFY FILEGROUP con la opción READWRITE
4 Mover archivos de base de datos
Además de agregar y eliminar archivos de una base de datos, es posible que a veces necesite mover
archivos de base de datos, o incluso bases de datos completas. También es posible que deba copiar
una base de datos.

4.1 Mover archivos de base de datos de usuario


Puede mover archivos de base de datos a una ubicación diferente mediante SSMS o la instrucción
ALTER DATABASE de Transact-SQL.

Nota: Antes de poder mover archivos de base de datos, debe desconectar la base de datos.

Cuando mueve los archivos de la base de datos del usuario, debe usar el nombre lógico del archivo
definido cuando crea la base de datos. Puede usar la vista sys.database_files para descubrir el
nombre lógico de los archivos en una base de datos.

4.2 Uso de la instrucción ALTER DATABASE


Puede usar la instrucción ALTER DATABASE para mover archivos de base de datos dentro de la
misma instancia de SQL Server al incluir la cláusula MODIFY FILE en la instrucción.

El siguiente ejemplo muestra cómo mover el archivo de datos para la base de datos
AdventureWorks:

Mover archivos de base de datos utilizando la instrucción ALTER DATABASE


ALTER DATABASE AdventureWorks SET OFFLINE;
// Move the files on the file system
ALTER DATABASE AdventureWorks MODIFY FILE (NAME = AWDataFile, FILENAME = 'C:\AWDataFile.mdf');
ALTER DATABASE AdventureWorks SET ONLINE;

4.3 Separar y adjuntar bases de datos


SQL Server le proporciona la funcionalidad de desconexión y conexión que puede usar para agregar
o eliminar una base de datos de una instancia particular del motor de la base de datos. Esto permite
que una técnica de uso común mueva una base de datos de una instancia a otra.

4.3.1 Separar bases de datos


Separe las bases de datos de una instancia de SQL Server mediante SSMS o el procedimiento
almacenado sp_detach_db. La separación de una base de datos no elimina los datos de los archivos
de datos ni elimina los archivos de datos del servidor. Simplemente elimina las entradas de
metadatos para esa base de datos de las bases de datos del sistema en esa instancia de SQL Server.
La base de datos separada ya no aparece en la lista de bases de datos en SSMS o en los resultados
de la vista sys.databases. Después de haber separado una base de datos, puede moverla o copiarla
y luego adjuntarla a otra instancia de SQL Server.

4.4 ACTUALIZAR ESTADÍSTICAS


SQL Server mantiene un conjunto de estadísticas sobre la distribución de datos en tablas e índices.
Como parte del proceso de separación, puede especificar una opción para realizar una operación
ACTUALIZAR ESTADÍSTICAS en estadísticas de tabla e índice. Si bien esto es útil si va a volver a
conectar la base de datos como una base de datos de solo lectura, en general no es una buena
opción para usar mientras se separa una base de datos.

4.5 Bases de datos desmontables


No todas las bases de datos se pueden separar. Las bases de datos que están configuradas para
replicación, duplicadas o en un estado sospechoso, no se pueden separar.

Un problema más común que impide que una base de datos se separe en el momento en que intenta
realizar la operación, es que las conexiones están abiertas a la base de datos. Debe asegurarse de
que todas las conexiones se corten antes de separar la base de datos. SSMS ofrece una opción para
forzar la caída de las conexiones durante esta operación.

4.6 Adjuntar bases de datos


SSMS también le brinda la posibilidad de adjuntar bases de datos. También puede hacer esto usando
CREATE DATABASE … FOR ATTACH statement.

Nota: Puede encontrar muchas referencias a los procedimientos almacenados


sp_attach_db y sp_attach_single_file_db. Esta sintaxis anterior se reemplaza por la opción
FOR ATTACH a la instrucción CREATE DATABASE. Tenga en cuenta también que no hay un
reemplazo equivalente para el procedimiento sp_detach_db.

Un problema común cuando las bases de datos se vuelven a unir es que los usuarios de la base de
datos pueden quedar huérfanos. Verá cómo lidiar con este problema en un módulo posterior.

4.7 Demostración: separar y adjuntar una base de datos


En esta demostración, verá cómo:

• Separar una base de datos.


• Adjuntar una base de datos.

Pasos de demostración

Paso 1.- Separar una base de datos

1. Asegúrese de haber completado las demostraciones anteriores en este módulo y de haber


creado una base de datos llamada DemoDB2.
2. En el Explorador de objetos, haga clic con el botón derecho en la carpeta Bases de datos y
haga clic en Actualizar; y verifique que la base de datos DemoDB2 esté en la lista.
3. Haga clic con el botón derecho en DemoDB2, seleccione Tareas y haga clic en Separar.
Luego, en el cuadro de diálogo Separar base de datos, seleccione Soltar conexiones y
Actualizar estadísticas y haga clic en Aceptar.
4. Vea las carpetas M:\Data y L:\Logs y verifique que los archivos DemoDB2.mdf y
DemoDB2.ldf no se hayan eliminado.

Paso 2.- Adjuntar una base de datos

1. En SQL Server Management Studio, en Object Explorer, en la lista desplegable Connect,


haga clic en Motor de base de datos. Luego, conéctese al motor de base de datos
SQLSERVER\MSSQLSERVER utilizando la autenticación de Windows.
2. En Object Explorer, en SQLSERVER\MSSQLSERVER, expanda Bases de datos y vea las bases
de datos en esta instancia.
3. En el Explorador de objetos, en SQLSERVER\MSSQLSERVER, haga clic con el botón derecho
en Bases de datos y haga clic en Adjuntar.
4. En el cuadro de diálogo Adjuntar bases de datos, haga clic en Agregar. Luego, en el cuadro
de diálogo Localizar archivos de base de datos, seleccione el archivo de base de datos
M:\Data\DemoBD2.mdf y haga clic en Aceptar.
5. En el cuadro de diálogo Adjuntar bases de datos, después de haber agregado el archivo de
bases de datos maestras, tenga en cuenta que todos los archivos de bases de datos están
listados. Luego haga clic en Aceptar.
6. En el Explorador de objetos, en SQLSERVER\MSSQLSERVER, en Bases de datos, verifique que
DemoDB2 esté en la lista.
5 Configurar la extensión de la agrupación de almacenamientos
intermedios
Los temas en este módulo hasta ahora han discutido el almacenamiento de los archivos de la base
de datos del sistema y del usuario. Sin embargo, SQL Server 2014 también admite el uso de
dispositivos de almacenamiento de alto rendimiento, como los discos de estado sólido (SSD) para
ampliar el grupo de búferes (el caché utilizado para modificar las páginas de datos en la memoria).

5.1 Introducción a la extensión del grupo de búferes


SQL Server utiliza un grupo de memoria intermedia para almacenar en caché las páginas de datos,
lo que reduce la demanda de E / S y mejora el rendimiento general. A medida que las cargas de
trabajo de la base de datos se intensifican con el tiempo, puede agregar más memoria para
mantener el rendimiento, pero esta solución no siempre es práctica. Agregar almacenamiento a
menudo es más fácil que agregar memoria, por lo que SQL Server 2014 presenta la Extensión de
agrupación de almacenamiento intermedio para permitirle usar dispositivos de almacenamiento
rápidos para páginas de agrupación de almacenamiento intermedio.

La extensión de la agrupación de almacenamientos intermedios es una extensión para la agrupación


de almacenamientos intermedios de SQL Server que se dirige a dispositivos de almacenamiento no
volátiles, como las unidades de disco de estado sólido (SSD). Cuando la extensión de la agrupación
de almacenamientos intermedios está habilitada, SQL Server la utiliza para páginas de datos de
manera similar a la memoria de la agrupación de almacenamientos intermedios principal.

Solo las páginas limpias, que contienen datos comprometidos, se almacenan en la Extensión de la
agrupación de almacenamiento intermedio, lo que garantiza que no exista riesgo de pérdida de
datos en caso de falla del dispositivo de almacenamiento. Además, si falla un dispositivo de
almacenamiento que contiene la Extensión de la agrupación de almacenamiento intermedio, la
extensión se deshabilita automáticamente. Puede volver a habilitar fácilmente la extensión cuando
se haya reemplazado el dispositivo de almacenamiento fallido.

Buffer Pool Extension ofrece los siguientes beneficios:

• Las mejoras de rendimiento en las aplicaciones de procesamiento de transacciones en línea


(OLTP) con una gran cantidad de operaciones de lectura se pueden mejorar
significativamente.
• Los dispositivos SSD a menudo son menos costosos por megabyte que la memoria física, lo
que lo convierte en una forma rentable de mejorar el rendimiento en bases de datos
vinculadas a E / S.
• La extensión de la agrupación de almacenamiento intermedio se puede habilitar fácilmente
y no requiere cambios en las aplicaciones existentes.

Nota: La extensión del grupo de búferes solo está disponible en instalaciones de 64 bits de SQL
Server 2014 Enterprise Edition.

5.2 Consideraciones para usar la extensión del grupo de búferes


Se ha demostrado que Buffer Pool Extension mejora el rendimiento de las bases de datos OLTP. Si
bien las cargas de trabajo de la base de datos pueden variar significativamente, el uso de la
Extensión de la agrupación de almacenamiento intermedio suele ser beneficioso cuando se cumplen
las siguientes condiciones:

• La carga de trabajo de E / S consiste en operaciones OLTP con un alto volumen de lecturas.


• El servidor de la base de datos contiene hasta 32 GB de memoria física.
• La extensión de la agrupación de almacenamiento intermedio está configurada para usar
un archivo que tiene entre cuatro y 10 veces la cantidad de memoria física en el servidor.
• El archivo de la extensión de la agrupación de almacenamientos intermedios se almacena
en un almacenamiento SSD de alto rendimiento.

Los escenarios en los que es improbable que la extensión de la agrupación de almacenamiento


intermedio mejore significativamente el rendimiento incluyen:

• Cargas de trabajo del almacén de datos.


• Cargas de trabajo OLTP con un alto volumen de operaciones de escritura.
• Servidores en los que hay más de 64 GB de memoria física disponibles para SQL Server.

5.3 Trabajar con la extensión del grupo de búferes


Para cambiar el tamaño o la ubicación del archivo Buffer Pool Extension, debe deshabilitar Buffer
Pool Extension y luego volver a habilitarlo con la configuración requerida. Cuando deshabilita la
Extensión de la agrupación de almacenamiento intermedio, SQL Server tendrá menos memoria de
almacenamiento intermedio disponible, lo que puede causar un aumento inmediato de la presión
de memoria y E / S, lo que resulta en una degradación del rendimiento. Por lo tanto, debe planificar
cuidadosamente la reconfiguración de la Extensión de la agrupación de almacenamiento intermedio
para minimizar la interrupción para los usuarios de la aplicación.

Puede ver el estado de la extensión de la agrupación de almacenamiento intermedio consultando


la vista de administración dinámica sys.dm_os_buffer_pool_extension_configuration. Puede
monitorear su uso consultando la vista de administración dinámica sys.dm_os_buffer_descriptors.

5.4 Configurar la extensión de la agrupación de almacenamientos intermedios


Para habilitar la extensión de la agrupación de almacenamientos intermedios, debe usar la
instrucción ALTER SERVER CONFIGURATION

y especifique el nombre de archivo y el tamaño que se utilizará para el archivo de la Extensión de la


agrupación de almacenamiento intermedio.

El siguiente ejemplo de código habilita la extensión de la agrupación de almacenamiento intermedio


con un tamaño de 50 GB:

Habilitación de la extensión del grupo de búferes


ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'E:\SSDCACHE\MYCACHE.BPE', SIZE =
50 GB);
Para deshabilitar la extensión de la agrupación de almacenamientos intermedios, use la instrucción
ALTER SERVER CONFIGURATION con la cláusula SET BUFFER POOL EXTENSION OFF.
Para cambiar el tamaño o la ubicación del archivo Buffer Pool Extension, debe deshabilitar Buffer
Pool Extension y luego volver a habilitarlo con la configuración requerida. Cuando deshabilita la
Extensión de la agrupación de almacenamiento intermedio, SQL Server tendrá menos memoria de
almacenamiento intermedio disponible, lo que puede causar un aumento inmediato de la presión
de memoria y E / S, lo que resulta en una degradación del rendimiento. Por lo tanto, debe planear
cuidadosamente la reconfiguración de la Extensión de la agrupación de almacenamiento intermedio
para minimizar la interrupción para los usuarios de la aplicación.

Puede ver el estado de la extensión de la agrupación de almacenamiento intermedio consultando


la vista de administración dinámica sys.dm_os_buffer_pool_extension_configuration. Puede
monitorear su uso consultando la vista de administración dinámica sys.dm_os_buffer_descriptors.

5.5 Demostración: configuración de la extensión del grupo de búferes En esta


demostración, verá cómo:
• Habilite la extensión de la agrupación de almacenamientos intermedios.
• Verifique la configuración de la extensión de la agrupación de almacenamientos
intermedios.
• Deshabilite la extensión de la agrupación de almacenamientos intermedios.

Pasos de demostración
Habilite la extensión del grupo de búferes

1. Asegúrese de haber completado la demostración anterior. De lo contrario, inicie la máquina


virtual SQLSERVER, inicie sesión como SQLSERVER\SQLAdmin con la contraseña Passw0rd y
ejecute D:\Demofiles\Mod03\Setup.cmd como administrador.
2. Si SQL Server Management Studio no está abierto, inícielo y conéctese al motor de base de
datos SQLSERVER utilizando la autenticación de Windows.
3. Abra el archivo de script ConfiguringBPE.sql en la carpeta D:\Demofiles\Mod03.
4. Revise el código debajo del comentario Habilitar extensión de agrupación de
almacenamientos intermedios y tenga en cuenta que crea un archivo de Extensión de
agrupación de almacenamientos intermedios denominado MyCache.bpe en S:\. En un
sistema de producción, esta ubicación de archivo normalmente estaría en un dispositivo
SSD.
5. Utilice el Explorador de archivos para ver el contenido de la carpeta S:\ y tenga en cuenta
que no existe ningún archivo MyCache.bpe.
6. En SQL Server Management Studio, seleccione el código debajo del comentario Habilitar
extensión de agrupación de almacenamiento intermedio y haga clic en Ejecutar.

Verifique la configuración de la extensión de la agrupación de almacenamientos intermedios

1. Vea el contenido de la carpeta S:\ y observe que el archivo MyCache.bpe ahora existe.
2. En SQL Server Management Studio, seleccione el código debajo del comentario Ver detalles
de extensión de agrupación de almacenamiento intermedio y haga clic en Ejecutar. Luego,
tenga en cuenta la información sobre la Extensión de la agrupación de almacenamientos
intermedios que se devuelve desde la vista de administración dinámica.
3. Seleccione el código debajo de la extensión del grupo de búferes de Monitor de comentarios
y haga clic en Ejecutar. Esta vista de administración dinámica muestra todas las páginas
almacenadas en el búfer, y la columna is_in_bpool_extension indica las páginas que están
almacenadas en la Extensión de la agrupación de almacenamientos intermedios.

Deshabilitar la extensión del grupo de búferes

1. En SQL Server Management Studio, seleccione el código debajo del comentario Deshabilitar
la extensión del grupo de búferes y haga clic en Ejecutar.
2. Seleccione el código debajo del comentario Ver detalles de la extensión de la agrupación de
almacenamiento intermedio y haga clic en Ejecutar. Luego, tenga en cuenta la información
sobre la Extensión de la agrupación de almacenamientos intermedios que se devuelve
desde la vista de administración dinámica.
3. Use el Explorador de archivos para ver el contenido de la carpeta S: \ y observe que el
archivo MyCache.bpe se ha eliminado.

También podría gustarte