SQL Server
1. El modelo Cliente – Servidor
Toda aplicación informática tiene al menos tres niveles funcionales:
Nivel de Presentación: Incluye el interfaz de usuario, y es el responsable de
aceptar los datos que introduce el usuario y mostrar la información de resultados.
Nivel de Lógica de Negocio: Son las reglas de negocio de la Organización que
han sido programadas en la aplicación. Aquí se validan los datos, se realizan los
cálculos, etc.
Nivel de Acceso a Datos: Es el nivel responsable del almacenamiento físico de
los datos y de la extracción y consulta de estos datos, así como de su
actualización, etc.
Estos tres "niveles" pueden encontrarse en
sitios diferentes, dependiendo de la
arquitectura computacional. Así, en una
arquitectura "tradicional", basada en un
mainframe o gran ordenador central, los
tres niveles, Presentación, Reglas de
Negocio y Acceso a datos, se encuentran
residiendo en el ordenador central, "host" o
"mainframe". El terminal de usuario no
incorpora ninguna "inteligencia" a la
aplicación, haciendo funciones solo de
terminal "tonto".
En el modelo de red local de ordenadores personales, donde se accede a un servidor
común de archivos por parte de los distintos PCs conectados a la red, tanto el nivel
Presentación como la Reglas de Negocios residen en los PCs o estaciones de usuarios. Al
Servidor de archivos le quedan reservadas las funciones de Acceso a datos.
El modelo "Cliente-Servidor"
admite diversas variantes,
pero, para simplificar, se
puede afirmar que el Acceso a
datos está esclusivamente
asignado al Servidor (servidor
donde residen un sistema de
gestión de bases de datos
relacional), la Presentación
residen en las estaciones de
usuario, con todas sus
funciones asociadas de
interface, y la Reglas de
negocio, o Lógica de negocio,
puede estar en mayor o
menor medida distribuida entre ambos extermos.
2. Arquitectura física
La forma en la que "vemos" una base de datos, y la manera en que esta base de datos
reside o se estructura en un ordenador o un conjunto de ellos puede ser muy diferente.
Algunas de estas diferencias se muestran en el cuadro siguiente:
Un administrador de bases de datos (DBA) ve: Mientras que SQL Server ve:
Bases de Datos almacenadas físicamente en Bases de Datos almacenadas físicamente
archivos en archivos
Tablas, índices, vistas y otros objetos colocados en Páginas asignadas a tablas e índices
grupos de archivos
Columnas (campos) filas (registros) y almacenadas Información almacenada en paginas
en tablas
Una Base de Datos se crea sobre un conjunto de archivos de base de datos. La forma en
la que se almacene va a afectar en gran media al rendimiento (velocidad) de respuesta
ante consultas y actualizaciones.
La página es el nivel inferior de entrada/salida de SQL Server, y es la unidad de
almacenamiento fundamental. Las páginas contienen los propios datos o bien
información acerca de la disposición física de los datos. Existen seis tipos de página en
SQL Server:
Tipo de Página Almacena
Datos Las filas reales (registros) que forman las tablas de
datos.
Índice Los elementos de índice y punteros.
Texto e imagen Los datos de texto e imágenes
Mapa de Asignación Global Información acerca de las extensiones empleadas
Página de Espacio Libre Información acerca del espacio libre en las páginas.
Mapa de Asignación de Información acerca de las extensiones usadas por una
Índices tabla o índice.
Todas las páginas tienen una disposición similar. Todas tienen una cabecera de página de
96 bytes, y un cuerpo que, en consecuencia, ocupa 8.096 bytes. La información
almacenada en la cabecera y en el cuerpo depende del tipo de página. El administrador
de una base de datos, con sus privilegios, puede examinar el contenido de una página
mediente el comando DBCC PAGE.
Un archivo de base de datos puede configurarse para crecer automáticamente, si se
desea, o se puede limitar en su crecimiento. La unidad más pequeña de entrada/salida y
la estructura básica de almacenamiento es una página de 8 KB. Las páginas de una tabla
o índice se agrupan de ocho en ocho, en extensiones. Las extensiones pueden
compartirse entre tablas, lo que hace que se desperdicie menos espacio de
almacenamiento entre tablas pequeñas. Utilizando grupos de archivos, se puede
especificar el archivo (o conjunto de archivos) en el que se debería almacenar una tabla
o índice.
Un índice agrupado ordena la tabla de acuerdo a la clave del índice. Los índices no
agrupados (también llamados árboles binarios) apuntan a las filas de datos. El tamaño
máximo de un único archivo de base de datos es de 32 TB (treinta y dos billones de
bytes), y el tamaño máximo de una base de datos es de 1.048.516 TB.
3. Tipos de datos y vistas
La integridad es una propiedad básica de las bases de datos. El tipo más básico de
integridad es la definición del tipos de datos que se puede almacenar en cada columna.
Esto no solo restringe los "caracteres" que se pueden almacenar en cada columna, sino
que también proporciona a SQL Server un conocimiento básico sobre la semántica de los
datos.
Se debe seleccionar ciudadosamente los tipos de datos a emplear en una tabla. Los tipos
de datos que se seleccionen tienen implicaciones en cuanto a la utilización del espacio, el
rendimiento, y otras cuestiones relativas a su sistema. SQL Server permite cambiar los
tipos de datos de las tablas existentes, siempre que sea posible una conversión implícita.
Tipo de Datos Nombre Características
Caracteres char Longitud fija
Caracteres nchar Longitud fija Unicode
Caracteres varchar Longitud variable
Caracteres nvarchar Longitud variable Unicode
Caracteres varbinary Binario
Caracteres image Para objetos binarios (como imágenes) de hastas 2 GB por fila
Caracteres timestamp Sello de tiempo. Sólo puede haber una columna Timestamp por
tabla.
Fecha datetime Para almacenar fechas y horas
Lógico bit
Numérico int 1 byte, rango desde 0 hasta 255
Numérico smallint 2 bytes, rango desde -32.768 hasta 32.768
Numérico tinyint 4 bytes, rango desde -2.147.483,647 hasta 2.147.483,647
Numérico float hasta 15 dígitos (-1,79E308 hasta 1,79E308)
Numérico real hasta 7 dígitos (-3,40E38 hasta 3,40E38)
Numérico numeric Exacto
Numérico decimal Exacto
Numérico money 8 bytes (-[Link].477 hasta [Link].477)
Numérico smallmoney 4 bytes (-214.748,364 hasta 214.748,364)
Vistas
Además de tablas de datos hay Vistas. Una Tabla es una estructura física que contiene
datos en filas y columnas. Una Vista es una forma lógica de ver los datos físicos
ubicados en las tablas. Una definición de Vista no es más que una Select almacenada,
una ventana a los datos almacenados.
Ejemplo
CREATE VIEW "Corredores_Veteranos" AS
SELECT Nombre, Apellidos, Numero, Edad
FROM Inscritos
WHERE Edad>40;
En este ejemplo, existe una tabla de datos de corredores inscritos en un carrera popular.
Se crea una Vista, que muestra sólo los corredores veteranos, es decir aquellos que
tienen más de 40 años de edad.
El empleo de Vistas proporciona una gran flexibilidad a las bases de datos relacionales, y
especialmente a SQL Server, permitiendo ofrecer a distintos usuarios y a distintas
aplicaciones una perspectiva distinta de los datos almacenados en la base, sin incurrir en
redundancias.
4. Procedimientos y desencadenadores
Además de Tablas y Vistas, una base de datos contiene otra serie de objetos (elementos)
necesarios para su funcionamiento y que se deben conocer.
Procedimientos almacenados
Un procedimiento almacenado (procedure) es un objeto ejecutable de la base de datos
que está almacenado en la misma. En términos coloquiales lo podríamos llamar
"programa". Pueden ser llamados de forma interactiva desde aplicaciones cliente, desde
otros procedimientos almacenados, y también desde los desencadenadores. Los
procedimientos almacenados pueden aceptar y devolver parámetros, también diversos
conjuntos de resultados, y un código de estado.
Los procedimientos almacenados son un buen lugar donde programar las reglas de
negocio de las aplicaciones, y generalmente son más eficientes que programar tales
reglar en los programas ejecutables en la parte "cliente". Estos procedimientos se
programan en Transac-SQL, que es una extensión del lenguaje de consulta SQL.
Desencadenadores
Los desencadenadores (trigger) son un tipo especial de procedimientos almacenados que
se ejecutan automáticamente como parte de una instrucción de modificación de datos
(INSERT, UPDATE o DELETE). Cuando una de las acciones para las que se ha definido el
desencadenador ocurre, el desencadenador se activa automáticamente. Este se ejecuta
en el mismo espacio de transacciones que la instrucción de modificación de datos. Son
una herramienta muy potente para el mantenimiento de la integridad de la base de
datos, ya que pueden:
Comparar las versiones anterior y posterior
Deshacer modificaciones no válidas
Leer otras tablas
Modificar otras tablas
Ejecutar procedimientos almacenados locales y remotos
Se pueden crear y
administrar los
desencadenadores de cada
tabla desde el
Administrador. Para ello,
una vez posicionado sobre
la tabla en que se quiere
crear o modificar un
desencadenador, se accede
al menú pulsando el botón
derecho del ratón.
De esta forma sólo hay que
especificar el nombre del
desencadenador, la tabla
en la que está y sobre la
que actúa, el motivo por el
que se dispara (inserción,
actualización o borrado), y
la secuencia de acciones
programadas.
5. Bases y tablas del sistema
Cuando se instala SQL Server se crean cuatro bases de datos del sistema que guardan
información del propio sistema, son necesarias para su funcionamiento, y no son
utilizables directamente por el usuario:
MASTER La base de datos Master registra toda la información de nivel de sistema para el
servidor SQL Server. Esto incluye las cuentas de inicio de sesión, parámetros de
configuración del servidor, la existencia de otras bases de datos, etc. La base de
datos Master es absolutamente crítica para los datos, por le que debería mantener
siempre una copia de seguridad de la misma. La mayor parte de los
procedimientos almacenados del sistema también se guardan en esta base de
datos, junto a los mensajes de error.
MSBD Su uso principal es el almacenamiento de la información que emplea el agente
SQL Server, como programación de trabajos, definición de operadores y alertas.
La información de la copia de seguridad también se almacena en esta base de
datos, y se emplea en la restauración de la base de datos.
MODEL Es una base de datos plantilla, que se emplea cada vez que se crea una nueva
base de datos. Los contenidos de la base Model se copian a la nueva base. Si se
desea que determinados objetos, permisos, usuarios se creen automáticamente
cada vez que se crea una base de datos, pueden incluirse en esta base.
TEMPDB Algunas veces SQL Server necesita crear tablas temporales internas (o tablas de
trabajo) para determinadas operaciones. Entre dichas operaciones se incluye la
ordenación, las operaciones multitabla, el tratamento de cursores, etc. Estas
tablas temporales se borran tan pronto como el conjunto de resultados se
devuelve a la aplicación cliente, o cuando se cierra el cursor. Almacena todas las
tablas y procedimientos almacenados temporales. Esta base de crea de nuevo
cada vez que se inicia SQL Server, por lo que no tiene sentido crear copias de
seguridad de esta.
Cada base de datos dispone de un conjunto de tablas que la describen. Estas tablas se
denominan Catálogo de la base de datos. La base de datos MASTER tiene un conjunto
adicional de tablas que describen la instalación de SQL Server. Este conjunto se
denomina Catálogo del sistema.
El catálogo de la base de datos MSDB se usa como área de almacenamiento para:
La información de configuración utilizada por el Agente SQL Server. Incluye
información acerca de trabajos, pasos de trabajo, alertas, operadores, etc.
Información hitórica de copia de seguridad. Se conserva para que el Administrador
Corporativo pueda ayudar en la restauración de la base de datos.
Además de tablas, también hay Vistas del Sistema, y Procedimientos almacenados
del Sistema.
Un procedimiento almacenado del sistema es un procedimiento almacenado con algunas
características especiales. Estos procedimientos, creados cuando SQL Server se instala,
se usan para administrar el Servidor. Evitan al administrador tener que acceder
directamente a las tablas del sistema. Los siguientes atributos identifican un
procedimiento almacenado del sistema:
El nombre del procedimiento almacenado empieza por sp_.
El procedimiento se almecena en la base de datos Master.
El procedimiento es propiedad del dbo, es decir ha sido creado por el
administrador del sistema.
ANSI SQL-92 define un conjunto de vistas que proporcionan información acerca de los
datos del sistema. Estas vistas están disponibles en SQL Server 7.0. La ventaja de usar
vistas en lugar de consultar directamente a las tablas del sistema, es que la aplicación es
menos dependiente del sistema de administración de base de datos o de una versión
particular.
6. Creación de bases de datos
La creación de bases de datos es una sencilla tarea mediante el Administrador
Corporativo (Enterprise Manager). Antes de la creación, se deben determinar los
siguientes puntos:
Nombre de la base de datos.
Ubicación (disco, directorio) de los archivos de la base de datos.
Si se quiere permitir el crecimiento automático de la base de datos.
Cómo se desea restringir el tamaño máximo de la base de datos.
Qué opciones se quieren habilitar (restricciones de acceso).
En el siguiente ejercicio crearemos una base de datos utilizando el Administrador
Corporativo. La base de datos tendrá los siguientes parámetros:
Nombre: Mi base de datos
Ubicación: Predeterminada
Crecimiento automático, permitiendo incrementos del 10%
Sin restricciones sen cuanto al tamaño máximo que pueda alcanzar la base de
datos.
1. Ejecute el Administrador Corporativo
2. Amplie (doble clic) el servidor en el que vaya a ubicar la base de datos.
3. Seleccione la carpeta Bases de Datos, haga clic en ella con el botón derecho del
ratón, y selccione Nueva base de datos.
4. Escriba el nombre de la base de datos y cambie el valor Tamaño inicial del archivo
a 1 MB, como se muestra en la figura anterior.
5. Cambien el crecimiento del archivo, para que se incremente automáticamente en
un 10%.
6. Haga clic en Aceptar para completar la creación de la base de datos.
Puede realizar muchas de las tareas aquí mencionadas a través de los Asistentes de SQL
Server 7.0. Para acceder a estos Asistentes, haga clic en Ejecutar un asistente de la
barra de herramientas.
7. Configuración del Servidor
A través del Administrador corporativo se puede realizar la configuración del servidor,
redefiniendo los parámetros de memoria, las conexiones de usuario o los bloqueos
establecidos. Cada una de las pestañas de la pantalla anterior tienen las siguientes
funciones:
General: Permite establecer parámetros de arranque, y proporciona información
general sobre la instalación
Memoria: Reservar memoria física o configurar la gestión dinámica de la memoria
del servidor.
Procesador: Controlar las hebras y gestionar el entorno multiprocesador.
Seguridad: Autenticación, auditoría, y arranque.
Conexiones: Gestión de usuarios concurrentes y atributos.
Parámetros de Servidor: Soporte año 2000, lenguaje, etc.
Parámetros de Base de datos: Índices, periodo de recuperación y gestión de
salvaguardas.
Para modificar la configuración, en vez de utilizar las instrucciones Transac-SQL, se
puede emplear el Administrador Corporativo. En el siguiente ejercicio definiremos la
configuración de memoria para que utilice de forma dinámica entre 8Mb y 14MB:
Ejecute el Administrador corporativo.
Seleccione el servidor que vaya a configurar.
En la barra de menú seleccione Herramientas, Propiedades de configuración de
SQL Server.
Acceda a la pestaña Memoria.
Cambie el valor mínimo del parámetro Configurar dinámicamente la memoria a
8Mb. Haga clic en Aceptar.
Nota La cantidad máxima de memoria que se puede asignar a SQL Server es la cantidad
total de RAM disponible en su servidor. Si la cantidad de carga fluctúa, establezca que la
memoria se configure dinámicamente.
8. Administración de Objetos
Tablas
Cuando se crea una tabla con el Administrador Corporativo, se debe especificar el
nombre de la misma, los nombres de las columnas y los tipos de datos que estas van a
contener. Los nombres de columnas deben ser unívocos para cada tabla, y cada columna
debe tener asociado un tipo de datos. Las definiciones de columna pueden cambiarse a
posteriori sin necesidad de eliminar la tabla y volverla a crear.
En el siguiente ejercicio crearemos una tabla en la base de datos Northwind (esta base es
una base de ejemplo que se instala automáticamente al instalar SQL Server). El nombre
que daremos a la tabla será DIRECCIONES, y las columnas tendrán los atributos
siguientes:
Nombre de la columna Tipo de dato Longitu
Para ello: d
1. En el Administrador
Nombre_Empleado Char 50 Corporativo,
seleccione la base de datos
Dirección Char 40
Northwind.
2. Amplie la Ciudad base de datos.
Char 25
3. Selccione Tablas, haga clic
en el Última_Actualización Date 8 botón derecho y
selccione Nueva tabla.
4. Escriba el nombre de la tabla.
5. Introduzca la información de las columnas.
6. Haga clic en Guardar, de la barra de herramientas Diseñar Tabla.
Índices
La ventaja de utilizar índices radica en la mejora de rendimiento. Cuando se consultan o
manipulan datos, los procesos pueden ser más eficaces si se utilizan índices. Para crear
un índice, selccione la tabla en la que desee crearlo, y haga clic con el botón derecho del
ratón. En el menú Todas las tareas, selecciones Administrar índices.
Desencadenadores
Los desencadenadores fuerzan restricciones en la introducción de los datos, rechazando y
deshaciendo los cambios que violen la integridad referencial, y realizando los cambios en
cascada.
Vistas
Las vistas permiten controlar los datos que los usuarios pueden ver. Una vista no consta
sólo de datos recuperados de una tabla, sino que puede integrar múltiples tablas. Las
vistas pueden tener asociado un conjunto de permisos, con el fin de restringir qué
usuarios pueden ver los datos recuperados.
9. Seguridad y administración de usuarios
La seguridad de SQL Server se
estructura en un doble nivel. El
primer nivel, la autenticación,
es el que verifica que un
determinado usuario que
intenta conectarse a un
servidor SQL Server tiene
acceso al sistema: la persona
es quien dice ser, y tiene
concedido el acceso. El
segundo nivel, los permisos, se
aplican a nivel de objeto. Una
vez que un usuario ha sido
autentificado como tal, y se ha
comprobado que tiene los
derechos, hay que verificar si
tiene los permisos adecuados.
Los permisos en SQL Server se
especifican a su vez en dos
niveles: el primero a nivel de
objeto, y el segundo a nivel de
instrucción. Los permisos a
nivel de objeto incluyen el
derecho de lectura,
modificación y borrado de
objetos. Los permisos de instrucción se conceden sobre instrucciones SQL que crean
objetos de la base de datos (bases, tablas, vistas,...).
La administración de los usuarios se puede hacer cómodamente desde el Administrador
Corporativo, gestionando los permisos de usuario y las funciones.
Usuarios:
dbo El dbo es un usuario especial que existe en todas las bases de datos, y como
(administrador) tal, no puede ser eliminado de la misma.
Guest (invitado) La cuenta Guest permite iniciar una sesión sin una cuenta de usuario que de
acceso a la base de datos. Se pueden añadir y eliminar cuentas de usuario
invitado en cualquier base de datos, excepto en las bases Master y Tempdb.
De manera predeterminada todos lo usuarios de una base de datos son miembros de la
función public, pero además se puede diferenciar entre funciones de servidor, que se
implementan a nivel de servidor, y por lo tanto afectan a todas las bases de datos
residentes en un servidor, y funciones de base de datos, que limitan su acción a una
determinada base de datos.
Funciones fijas de servidor
sysadmin Está por encima de las restantes funciones y tiene la autoridad para realizar
cualquier actividad en SQL Server.
serveradmin Se usa para conceder a un usuario la autoridad para realzar cambios en la
configuración de SQL Server.
setupadmin Da a un usuario capacidad sobre la configuración de duplicación en el sistema y
los procedimientos almacenados que se instalen.
securityadmin Proporciona a un usuario la capacidad de administrar los inicios de sesión.
processadmin Permite a un usuario gestionar los procesos que se ejecutan bajo SQL Server.
dbcreator Proporciona a un usuario la capacidad de crear y modificar bases de datos en
SQL Server.
diskadmin Otorga la capacidad para crear archivos de disco.
Funciones fijas de base de datos
db_owner Función que se asigna a un usuario que es propietario de una base de
datos.
db_accessadmin Proporciona a un usuario la capacidad de añadir o eliminar grupos de
Windows NT, usuarios de Windows NT, y usuarios de SQL Server a la
base de datos.
db_datareader Permite al usuario seleccionar datos en cualquier tabla de la base de
datos.
db_datawriter Permite al usuario insertar, actualizar o borrar datos en cualquier tabla
de la base de datos.
db_ddladmin Permite crear, modificar y eliminar objetos de la base de datos.
db_securityadmin Permite a sus miembros crear y mantener las funciones de base de
datos y sus permisos, así como gestionar los permisos dentro de la base
de datos.
db_backupoperator Permite la realización de copias de seguridad.
db_denydatareader Deniega la capacidad de seleccionar (leer) datos de cualquier tabla de la
base de datos.
db_denydatareader Deniega la capacidad de escribir, modificar, actualizar o borrar datos.
10. Copias de Seguridad
La realización de copias de seguridad es parte de cualquier entorno de bases de datos.
Una copia de seguridad es una copia de la bases de datos (o de parte) almacenada en
algún dispositivo (cinta, disco,...). Una restauración es el proceso utilizado para devolver
una base de datos al estado en el que estaba en el momento en que se realizó la copia
de seguridad. SQL Server permite cuatro tipos distintos de Copias de Seguridad:
Copia Completa de la Copia los datos y el registro de transacciones.
base de datos
Copia Diferencial de la Copia sólo los cambios realizados en la base de datos desde que se
base de datos hizo la última copia de seguridad completa de la misma. Son útiles en
entornos grandes. Para la restauración, requieren que antes se
restaure la copia completa, y posteriormente se restaure la copia
diferencial.
Copia del Registros de Es un copia de las transacciones confirmadas en el registro de
transacciones transacciones.
Copia de Archivo y Se limita a archivos individuales y grupos de archivos. Puede ser útil
Grupo de archivos cuando no se dispone de tiempo para una copia completa o
diferencial.
Las copias de seguridad constituyen la forma más sencilla y fiable de asegurar que se
podrá recuperar una base de datos. Deben realizarse tan frecuentemente como sea
necesario para llevar a cabo una administración efectiva de los datos. Generalmente las
copias completas se efectuán en horas de baja o nula actividad, mientras que las
diferenciales pueden efectuarse a cualquier hora.
¿Por qué hacer copias de seguridad?
Las copias son molestas y tediosas. Pero deben efectuarse como medio de
aseguramiento frente al riesgo de que ocurra un evento por el que se pierda la base de
datos. Es la forma más sencilla y fiable de asegurar que se podrá recuperar una base de
datos, y son un elemento fundamental en cualquier entorno con tolerancia a fallos. Sin
una copia de seguridad, podría perder todos sus datos, los cuales tendrían que recrearse
desde su origen, y quizá no fueran reproducibles.
11. Dispositivos de copia de seguridad
Un dipositivo de copia de seguridad se crea para uso exclusivo de los
comandos Backup y Restore. Cuando se hace una copia de una base de datos o de un
registro de transacciones, se debe indicar a SQL Server dónde debe crearse la copia.
La creación de un dispositivo de copia de seguridad permite asociar el nombre lógico con
el soporte físico de copia de seguridad. Los dos tipos más comunes de soportes son los
dispositivos de cinta y los dispositivos de disco.
Todas las copias de seguridad, independientemente de su tipo (sobre disco o sobre
cinta), usan el formato MTF (Microsoft Tape Format).
Dispositivos de cinta inherentemente más seguros que los dispositivos disco, ya que el
soporte (cinta) es extraíble y portátil.
Dispositivos de disco Simplemente un archivo en un directorio. Es más rápido que hacerlo en
cinta.
La línea entre copias de seguridad en cinta y en disco se difumina a medida que los tipos
de dispositivos extraíbles (disco óptico, unidades zip, etc) ganan adeptos y aumentan su
capacidad. Cada dispositivo de copia de seguridad tiene un nombre físico y un nombre
lógico.
Nombre Se usa un nombre lógico para hacer referencia a un nombre físico de forma
lógico amigable y fácil de utilizar y recordar.
Nombre Normalmente el nombre físico para los dispositivos de cinta está predefinido
físico por el sistema operativo.
Creación de dispositivos de
copia de seguridad
Se puede utilizar el
Administrador corporativo para
definir dispositivos de cinta a
través de una interfaz gráfica:
Este cuadro de diálogo permite
definir los nombre físico y lógico,
así como asignar la ubicación
física del dispositivo e indicar si
se trata de un dispositivo de
disco o de cinta.
12. Comandos de copia de seguridad
La sintaxis simplificada del comando de restauración es la siguiente:
backup database MiBaseDeDatos to MiDispositivo
Este es el comando básico para crear una copia de una base, cuyo nombre es
MiBaseDeDatos, sobre un dispositivo, denominado MiDispositivo. Este comando admiten
multiples predicados que le dan una gran potencia y flexibilidad. Para efectuar la copia de
seguridad, SQL Server debe estar funcionando, y los dispositivos de seguridad deben
estar identificados
Las copias se pueden hacer mediante este complejo lenguaje Transac SQL, o como
alternativa se puede emplear el Administrador Corporativo. Las funciones son idénticas,
se utilice el Administrador Corporativo, o se efectúe con secuencias de comandos.
Algunas de las opciones que es posible especificar al ejecutar la copia de seguridad son:
Descripción: se puede incorporar una descripción en texto de 255 caracteres.
Fecha de caducidad: fecha en la que caduca el soporte de la copia, y puede ser
sobreescrito.
Días de retención: no permite sobrescribir el medio hasta que se agote el plazo
de retención.
Atenció Se puede realizar una copia de seguridad de una base de datos mientras se está
n utilizando el servidor, aunque hacerlo puede dar lugar a una degradación
sustancial del rendimiento. Dividir las copias de seguridad incluso entre un
pequeño número de dispositivos disminuye el tiempo total requerido para ejecutar
dicha copia, decrementando de esta forma el impacto negativo en el rendimiento.
13. Restauración de Bases de datos
La sintaxis simplificada del comando de restauración es la siguiente:
restore database MiBaseDeDatos from MiDispositivo
Se pueden emplear la mayor parte de las opciones disponibles para el comando backup
en el comando restore, específicamente las opciones MEDIANAME, NOUNLOAD, UNLOAD,
y STATS.
Tambié la opción MOVE permite realizar una restauración en una ubicación y con un
nombre de archivo del sistema operativo diferentes.
Este es el comando para restaurar una base de datos, aunque también en este caso es
más cómodo emplear el Administrador Corporativo.
Otros tipos de restauraciones que se pueden realizar son:
Restauración de una copia de seguridad diferencial: en primer lugar hay que
restaurar la copia completa, y después la última copia difererencial.
Restauración del registro de transacciones: restore log
Nota Nadie puede utilizar la base de datos mientras se ejecuta el comando restore,
incluída la persona que ejecuta tal comando.
14. Consejos sobre copias
Frecuencia: tan a menudo como sea posible. El factor decisivo es el tiempo que la
Organización puede permitirse no tener disponible la base de datos después de un
fallo catastrófico.
¿Cuando?: si se efectúa durante las horas de trabajo, afectará al rendimiento del
sistema. Preferiblemente se efectuarán cuando no haya actividad, asi se asegura
que la copia contenga el estado de la base de datos anterior y posterior a la
ejecución de la copia.
Las copias del registro de transacciones se programan durante las horas normales
de trabajo, aunque son preferibles los periodos de baja actividad.
Se debe obtener tanta información como sea posible sobre los procesos de copia y
restauración. Esta información es muy valiosa para estimar duraciones y obtener
estadísticas:
sp_dbhelp: Tamaño total de la base
sp_spaceused: Número total de páginas utilizadas
En las copias, el tiempo de ejecución es lineal en función de las páginas utilizadas. En las
restauraciones, el tiempo de ejecución está en función del tamaño total de la base de
datos, y de las páginas utilizadas.
Plan de Copia de Seguridad y Recuperación
Cuando desarrolle un plan de copia y restauración, deberá tener en cuenta todas las
bases de datos. Las bases de datos del sistema tienen requisitos distintos que las bases
de datos de usuarios.
Existen dos peligros que acechan a las bases de datos del sistema:
Corrupción de la base o de las tablas.
Daños en el grupo de archivos de la base Master.
Los requistos de negocio definirán si se debe realizar una copia de seguridad de una base
de datos. Normalmente las copias son un requisito de los sistemas de producción. Su
plan debería definir lo siguiente:
¿Quién? Identifique a la persona o grupo responsable de realizar copias de seguridad y
recuperaciones.
¿Nombre? Especifique sus estándares de denominación para los nombres de bases de datos
y dispositivos de copia de seguridad.
¿Qué bases? Identifique las bases de datos de su sistema de las que deba hacer copia.
¿Qué tipos? Indique si sólo hará copia de la base de datos o también del registro de
transacciones.
¿Cómo? Decida si las bases de datos utilizarán dispositivos de archivo o de disco, y si la
copia se hará en un único proceso o se segmentará.
¿Frecuencia? Indique la programación para realizar copias de seguridad de la base de datos y
de los registros de transacciones.
¿Ejecución? Determine si las copias se iniciarán manualmente o de forma automática.
15. Mantenimiento de bases de datos
El mantenimiento de las bases de datos es una parte integral del rendimiento y
estabilidad de SQL Server. Los servidores de SQL que no se mantienen de forma
periódica, generalmente dan muy pocos problemas, tanto al administrador del sistema,
como a los usuarios de las bases de datos.
Para facilitar el
mantenimiento de las
bases de datos, SQL
Server incluye un
Asistente para Planes
de Mantenimiento de
Bases de Datos. El
Plan de Mantenimiento
ayuda a ejecutar las
instrucciones
incorporadas de
mantenimiento más
frecuente utilizadas en
SQL Server. Estos
procedimientos
permiten realizar las
tareas de forma
inmediata, o permite
programarlas para su
ejecución periódica.
El plan incluye:
Comprobación de la integridad de la base de datos.
Actualización de las estadísticas de la base de datos.
Realización de copias de seguridad de la base de datos.
Algunas de las
opciones que es
posible especificar en
el mantenimiento se
pueden ver en la
pantalla siguiente:
Reorganizar páginas
de datos y de
índices: cuando se
instala SQL Server se
define un porcentaje
de espacio libre para
cada página de datos
e índices. Cuando un
índice se llena, se
produce una división de la página para acomodar más datos. Cuantas más divisiones se
producen, más se alargan los tiempos. Los valores bajos de fillfactor que permiten crear
nuevos índices con páginas que no estén completamente llenas, lo que hace que se
produzcan menos divisiones, y se optimice el tiempo.
Actualizar estadísticas: actualiza las estadísticas de distribución a fin de optimizar el
desplazamiento de navegación a través de las tablas.
Eliminar el espacio no usado: elimina cualquier espacio no usado, reduciendo el
tamaño de la base de datos.
16. Transac SQL: Creación de objetos
Para poder crear objetos en la base de datos, el usuario debe tener permisos de tipo
CREATE. El creador de un objeto se convierte en su propietario.
El objeto por excelencia es la tabla. La tabla es el único tipo de elemento de transporte
de información en una base de datos relacional. La tabla tiene una estructura compuesta
por un conjunto de filas y un conjunto de columnas. Cada columna (mejor los datos que
se almacenan en una columna) está basada en un tipo de datos, que limita los posibles
valores que pueden almacenarse en ella. Así una columna definida para almacenar datos
numéricos, no podrá contener datos alfabéticos. Para crear una tabla se emplea:
CREATE TABLE MiTabla (nombre_columna tipodato, ...)
Por ejemplo:
CREATE TABLE Agenda
(Nombre VARCHAR (100),
Direccion VARCHAR (200),
Edad SMALLINT)
Creará la tabla:
Nombre Dirección Edad
Otras instrucciones:
ALTER TABLE: para modificar la descripción de una tabla.
INSERT: para insertar filas de datos dentro de una tabla.
UPDATE: para modificar el contenido de una tabla.
DELETE: elimina filas de una tabla.
DROP TABLE: elimina una tabla.
Si se quiere insertar datos en la tabla creada en el ejemplo anterior, la secuencia de
instrucciones será:
INSERT Agenda (Nombre, Direccion, Edad) VALUES ('Milagros', 'calle de la Parra 23', 29)
Dando como resultado:
Nombre Dirección Edad
Milagros calle de la Parra 23 29
El número de valores en la lista VALUES debe corresponderse con el número de
elementos de la lista de columnas. Para insertar más de una fila es necesario emplear
INSERT con una subconsulta.
17. Transac SQL: Interrogación de datos
Estructura básica común para todas las interrogaciones de datos es la siguiente:
SELECT columna_1, columna_2,...
FROM Tabla_1, Tabla_2,...
WHERE condiciones_de_búsqueda
GROUP BY expresion
ORDER BY expresion ASC/DESC
Por ejemplo, en la tabla de la lección anterior, si queremos obtener la lista ordenada
alfabéticamente de todas las personas de la agenda que tienen 30 años:
SELECT Nombre
FROM Agenda
WHERE Edad=30
ORDER BY Nombre ASC
La consulta de selección tiene mucha potencia, empleando los operadores adecuados.
Así, es posible concatenar condiciones mediante los operadores booleanos AND, OR,
NOT, NOR, XOR, etc.
SELECT Nombre, Direccion
FROM Agenda
WHERE Edad=30 AND Nombre LIKE 'Pepe'
Obtendrá como resultado todos aquellos cuyo nombre es Pepe y tienen 30 años. Cuando
se encadenan distintas condiciones mediante operadores booleanos es necesario recordar
el orden en el que estos se evaluan. Así la condición
WHERE Edad=30 AND Nombre LIKE 'Pepe' OR Direccion LIKE 'Plaza Mayor 26'
Produce un resultado distinto que
WHERE Edad=30 OR Direccion LIKE 'Plaza Mayor 26' AND Nombre LIKE 'Pepe'
Para evitar Estos problemas, conviene forzar la intrepretación mediante paréntesis. Así:
WHERE Edad=30 AND (Nombre LIKE 'Pepe' OR Direccion LIKE 'Plaza Mayor 26')
De esta forma se fuerza el cumplimiento de la expresión condicional, evaluándose
primero la expresión que está entre paréntesis, y posteriormente la parte de la
conjunción. Además, es posible efectuar búsquedas de cadenas de caracteres empleando
comodines. Para ello hay que olvidarse de las convenciones introducidas años atrás por
el MS-DOS, y adaptarse a las propias de SQL. Estas son:
comodí significado equivalente MS-DOS
n
% Cualquier número de caracteres *
_ Un único caracter ?
[] Cualquiera de los caracteres enumerados entre los
corchetes
Así la consulta formulada como:
SELECT Nombre, Direccion
FROM Agenda
WHERE Nombre LIKE 'Pe%'
Producirá como resultado a Pepe, pero también a Penélope, a Pedro, a Petra, etc.
La instrucción ORDER BY sirve para producir un resultado ordenado, de forma
ascendente o descendente (ASC o DESC), por una determinada columna.
18. Transac SQL: Funciones
De Cadena
Permiten manipular y evaluar cadenas de caracteres, como CHAR, DIFFERENCE, LEN,
LTRIM, REPLACE, REPLICATE, REVERSE, RTRIM, SPACE, STR, etc.
Matemáticas
Realizan cálculos basándose en valores de entrada, y devuelven un valor numérico como
ABS (valor absoluto), COS (coseno), LOG (logaritmo), PI (constante pi), POWER
(potencia), SQR (raíz cuadrada), etc.
Fecha
Permiten realizar operaciones sobre fechas, formatearlas, calcular diferencias de fechas,
etc. GETDATE, DATEDIFF, etc.
De Agregación
Permiten obtener valores agregados en las consultas: AVG (media aritmética), COUNT
(total de registros), MAX (valor máximo), MIN (valor mínimo), VAR (varianza), etc.
Ejemplos
LEN(hola) 4
REPLICATE (hola, 3) holaholahola
REVERSE(hola) aloh
PI( ) 3,1415
POWER (2, 3) 8
SQR(16) 4
GETDATE( ) fecha de hoy
DATEDIFF(2001-03-28 2001-04-28) 31
La ejecución de la consulta
SELECT AVG(Edad)
FROM Agenda
WHERE Nombre LIKE 'Pe%'
Daría como resultado la edad media de todas las personas cuyo nombre comienza por
Pe, esto es Pepe, Penélope, Petra,...
19. Transac SQL: Estructuras de programación
Los lenguajes que interactúan con sistemas de gestión de bases de datos se suelen
clasificar en tres categorías:
Lenguajes de manipulación de datos (DML, Data Manipulation Language).
Estos lenguajes tienen la posibilidad de leer y manipular los datos. Ejemplos de
instaucciones de este tipo son SELECT, INSERT, DELETE y UPDATE, vistas en las
lecciones anteriores.
Lenguajes de definición de datos (DDL, Data Definition Language). Sirven
para crear y modificar las estructuras de almacenamiento. Ejemplo sería las
instrucción CREATE TABLE.
Lenguajes de control de datos (DCL, Data Control Language). Permiten
definir permisos para el acceso a datos, como GRANT, REVOKE, etc.
Pero además T-SQL que es el lenguaje propio de SQL Server, incluye otras instrucciones
que pueden resultar útiles, y que permiten programar procedimientos almacenados.
IF ... ELSE
Admite una expresión booleana que puede ser evaluada para proporcionar un valor true
o false. Es decir, en caso de que se cumpla una condición, se ejecutarán una serie de
acciones. En caso en que no se cumpla esa condición se ejecutarán otro conjunto de
acciones u operaciones.
WHILE, BREAK, CONTINUE
La instrucción WHILE permite ejecutar un bucle mientras una determinada expresión
continúe siendo verdadera. BREAK hace que se salga del bucle WHILE, mientras que
CONTINUE para incondicionalmente la ejecución y evalúa de nuevo la expresión..
RETURN
Se emplea para parar la ejecución del programa y por tanto del procedimiento
almacenado y del desencadenador.
GOTO
¡Sí, existe una instrucción GOTO en Transac-SQL!. Efectúa un salto a una etiqueta
determinada. Es útil en la gestión de errores.
WAITFOR
Puede utilizarse para detener la ejecución durante un retardo determinado (WAITFOR
DELAY) o hasta un instante espoecificado (WAITFOR TIME).
EXECUTE
Ejecuta procedimientos almacenados.
Comentarios
Cualquiera que haya tenido que revisar o modificar algún fragmento de código estará de
acuerdo en la importancia que tienen los comentarios. Incluso aunque parezca obvio qué
es lo que hace el código cuando se está escribiendo, el significado no será probablemente
tan obvio, ni siquiera para su autor, pasado algún tiempo.
Cuando SQL Server encuentra un comentario, no ejecuta nada hasta el final del mismo.
SQL Server admite dos tipos de marcador de comentario:
/* Comentarios */
Estos marcadores son útiles para escribir comentarios de varias líneas. El texto contenido
entre el principio (/*) y fin (*/) de comentario, no será analizado sintácticamente,
compilado, ni ejecutado. Para los comentarios más cortos se puede utilizar
-- Comentarios
SQL Server no ejecutará el texto situado a continuación de los marcadores y hasta el
final de la línea.
[Link]