Crear una nueva base de datos
Antes de crear una nueva base de datos conviene tener en
cuenta los siguientes aspectos: La base de datos a crear se inicializará como
una copia de la base de datos model, que contendrá todos los objetos del
catálogo model. Esto nos permite incluir de manera automática ciertos objetos y
definiciones en todas las bases de datos nuevas.
Antes de comenzar conviene conocer la lista de elementos que
contendrá la base de datos, es bueno hacer un breve checklist aunque sólo sea como orientación:
Tamaño de la base de datos y el log.
Ubicación de la base de datos y el log.
Preparación de la documentación de la creación.
Una vez sean conocidos los datos necesarios, y se ha decidido
cual será el tamaño que reservaremos para la base de datos a crear, estamos
preparados para proceder a la definición de esta. Esta decisión se reflejará
considerablemente en el rendimiento del sistema, por lo que debe ser llevada a
cabo con cuidado.
Nombre de la base de datos. Identificadores
Los nombres de las
bases de datos deben cumplir las reglas generales para los identificadores de
objetos en SQL Server:
Deben ser únicos.
No pueden tener más de 128 caracteres.
Se permite incluir letras, números y caracteres especiales.
Distingue entre mayúsculas y minúsculas.
No podrá coincidir con una palabra clave de SQL.
No podrá contener espacios.
Validez de los identificadores
El procedimiento almacenado sp_validname permite determinar
si un identificador es válido. Su sintaxis es la siguiente: sp_validname
(`nombre')[, enviar error] Si el parámetro enviar error devuelve 1 el nombre
indicado no sirve y provocará errores.
exec sp_validname 'Nombre_a_validar'
Secuencia de creación
Al crear una base de datos se producen una serie de acciones:
Se asigna espacio en la ubicación física que se haya
especificado.
Se crean los ficheros de datos de la base de datos y su transaction log.
Se crea la base de datos como una copia de la base de datos model.
Se añade una fila a la tabla sysdatabares de la base de datos
master.
Se añade una fila a la tabla sysfiles de la propia base de
datos para cada fichero de datos asociado.
Se añade una fila a la tabla sysfilegroups de la propia base
de datos para cada grupo de ficheros asociado.
En una entrada anterior nos ocupamos de los aspectos de este
comando asociados con los ficheros de datos. Ahora
nos vamos a ocupar de las tareas relativas a la modificación de una base de
datos.
Modificación de bases de datos
Las modificaciones en una base de datos pueden realizarse a
través del Administrador Corporativo o mediante la sentencia Transact-SQL del
tipo ALTER DATABASE.
Ampliar una base de datos a través del Administrador Corporativo
Ampliar una base de datos significa asignarle nuevo espacio
en uno de sus ficheros, haciéndolo crecer, o en uno o varios ficheros de nueva
creación. Del mismo modo que podemos aumentar el tamaño asignado al
almacenamiento de datos, también es posible hacer crecer el transaction.log si la actividad
transaccional de la base de datos rebasa su límite asignado.
Para proceder a la expansión de una base de datos a través
del Administrador Corporativo deberemos elegir una base de datos y pulsar el
botón derecho del ratón para elegir la pestaña propiedades.
Y aparece la página de propiedades de la base de datos que
queremos ampliar. La pestaña archivos
permite modificar el número, tamaño y el nombre lógico de los ficheros de datos
asociados a ella.
También en esta pestaña es posible especificar el nuevo comportamiento
que deseamos tenga la base de datos con vista a su crecimiento. Si pulsamos en
el botón de tres puntos … a la derecha del epígrafe crecimiento
automático/Tamaño máximo (no mostrado en la imagen de arriba) sale el cuadro de
diálogo que nos permite hacerlo.
Expansión mediante comandos Transact-SQL. ALTER DATABASE
Una vez la base de datos ya ha
sido creada, es posible añadirle nuevos ficheros, o modificar el tamaño de los existentes a través del comando
ALTER DATABASE.
La cláusula FILEGROWTH permite indicar el incremento en el tamaño
del archivo que añadirá SQL Server cuando añada nuevo espacio al fichero de
datos. Es posible indicarlo en términos absolutos en KB o en porcentaje del
tamaño del fichero a expandir. Los incrementos se llevarán a cabo siempre en porciones
de 64 KB, tamaño que es el mínimo que es posible especificar. El valor por
defecto es el 10 %.
Reducción del tamaño de bases de datos
En SQL Server las bases de datos se pueden configurar para reducir
su tamaño automáticamente. Para ello liberan las páginas que ya no son
necesarias. Sin embargo, las bases de datos también pueden reducirse
manualmente a demanda, desde el Administrador Corporativo o con comandos Transact-SQL.
Reducción mediante el Administrador Corporativo
Para reducir el tamaño de las bases de datos desde el Administrador
Corporativo, se accede al menú contextual pulsando el botón derecho del ratón Tareas
->Reducir -> Base de Datos.
En el cuadro de diálogo el sistema informa del tamaño actual
de la base de datos y del espacio que realmente está ocupado.
Si queremos una reducción más exacta podemos optar por elegir
la opción Tareas-> Reducir -> Archivos.
Lo que abre un cuadro de diálogo similar al anterior.
Solo que en este caso actúa sobre el archivo físico .mdf de
la base de datos y permite más opciones, por ejemplo si elegimos Reorganizar
páginas antes de liberar espacio no utilizado se habilitará la caja
combinada de tamaño lo que nos permitirá elegir un tamaño exacto en MB siempre
y cuando no rebasemos a la baja el tamaño mínimo indicado. Aquí también se han explicado otros métodos para reducir el archivo log de la Base de datos.
Reducción con comandos Transact-SQL
Existen dos maneras de reducir el tamaño de una base de datos
con comandos de SQL: configurarla para la reducción automática, o reducirla
manualmente y de manera explícita.
Configuración para reducción automática
Consiste en especificar el parámetro AUTOSHRINK a TRUE en el
comando ALTER DATABASE
ALTER DATABASE { database_name | CURRENT }
SET
AUTO_SHRINK { ON | OFF }
Si ponemos AUTO_SHRINK a ON
Los archivos de la base de datos se pueden reducir
periódicamente.
Pueden reducirse automáticamente los archivos de datos
y los archivos de registro de transacciones. AUTO_SHRINK reducirá el tamaño del
registro de transacciones sólo si el modelo de recuperación de la base de datos
se establece en SIMPLE o si se realiza una copia de seguridad del registro.
La opción AUTO_SHRINK reduce los archivos si no
utiliza más de un 25% del espacio del archivo.
No es posible reducir una base de datos de solo
lectura.
Si ponemos AUTO_SHRINK a OFF
La base de datos no se reducirá automáticamente
durante las comprobaciones periódicas del espacio no utilizado.
Ejemplo.
ALTER DATABASE
dbDesarrollo1800
SET AUTO_SHRINK ON
Reducción manual
La reducción de la base de datos puede realizarse a través de
los comandos Transact-SQL DBCC SHRINKDATABASE
La sintaxis de SHRINKDATABASE es la siguiente:
DBCC SHRINKDATABASE
( database_name | database_id | 0
[ , target_percent
]
[ , {
NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
El parámetro porcentaje permite especificar el tamaño que
deseamos que tenga la base de datos una vez reducido su respecto al tamaño
actual. Los ficheros no se podrán reducir a un tamaño inferior al que fue
especificado en su creación con CREATE DATABASE. Si queremos reducir por debajo de ese límite tenemos
que usar la opción MODIFYFILE del comando ALTER DATABASE. Si especificamos NO
TRUNCATE los datos de los ficheros serán redistribuidos, haciendo que el espacio
libre quede al final de los mismos, pero no libera este espacio reduciendo
tamaño de los ficheros desde d punto de vista del sistema operativo.
TRUNCATE ONLY realiza la tarea contraria, libera el espacio
que sea posible pero sin producir ningún tipo de reordenación de los datos.
WITH NO_INFOMSGS Suprime todos los
mensajes informativos con niveles de gravedad entre 0 y 10.
Ejemplos:
Reducir
una base de datos y especificar un porcentaje de espacio disponible.
DBCC
SHRINKDATABASE (dbDesarrollo, 10);
GO
Truncar una base de datos
DBCC SHRINKDATABASE (dbDesarrollo, TRUNCATEONLY);
Para reducir un archivo de datos
o de registro cada vez para una base de datos específica, ejecutaremos DBCC
SHRINKFILE que tiene la misma sintaxis.
Configuración de la base datos
Existen múltiples parámetros que pueden tomar varios valores,
según la operatividad que se desee que tome la base de datos. Estas opciones
son globales y afectan a la base de tos en su conjunto.
Los parámetros que se especificaron en la creación de la base de datos. Se pueden modificar
para adaptar la base de datos a nuestras necesidades, para ello posicionados
sobre la base de datos en el administrador corporativo con el botón derecho del
ratón elegimos propiedades.
Y del cuadro de diálogo que aparece elegimos la pestaña
opciones.
Entonces aparecen las opciones que se especificaron en el
momento de la creación de la base de datos y los valores que toman, si lo
deseamos podemos modificar estos valores.
Renombrando una base de datos
Sólo el administrador puede renombrar una base de datos. Para
hacerlo se utiliza ALTER DATABASE del siguiente modo:
ALTER DATABASE
dbDesarrollo
Modify Name =
dbDesarrollo2;
Obtener información sobre bases de datos
Podernos recopilar información sobre numerosos aspectos de
nuestra base de datos, utilizando ciertos procedimientos almacenados.
sp_helpdb 'nombre_base_datos'
Proporciona información acerca de todas las bases de datos o
de una en particular. Devuelve el nombre, tamaño, propietario, identificador,
fecha de creación y opciones.
Si no se proporciona un parámetro y se pone sólo.
sp_helpdb
Nos entregará información sobre todas las bases de datos del
sistema.
La información sobre los ficheros de base de datos la
obtenemos con
sp_helpfile 'nombre_fichero'
Devuelve información sobre uno o todos los ficheros de una
base de datos, el nombre de los ficheros aparece marcado en rojo en la imagen
anterior, un ejemplo concreto sería:
sp_helpfile 'dbNuevaBD_Data'
La información sobre el espacio de almacenamiento la podemos
obtener con
sp_spaceused
Muestra la cantidad de espacio utilizado por una base de
datos, si especificamos el objeto, nos indicará el espacio que ocupa un objeto,
por ejemplo una tabla.
sp_spaceused 'dbo.tbNombre_Tabla'
Eliminación de bases de datos
Cuando se borra una base de datos se eliminan fisicamente los
ficheros asociados a ella. Sólo el administrador y el propietario de una base
de datos pueden borrarla. Existen algunas bases de datos que no pueden
eliminarse, por ejemplo las bases de datos master, model y tempdb. Tampoco se puede
eliminar las bases de datos que estén abiertas, o utilizadas en replicación. La
eliminación de la base de datos puede realizarse mediante el Administrador
Corporativo, pulsando el botón derecho del ratón sobre la base de datos y
elegimos eliminar. Por comando utilizaremos DROP DATABASE.
DROP DATABASE
dbDesarrollo
No hay comentarios:
Publicar un comentario