Você está na página 1de 57

Bases de Datos SQL Server

Ariel Martinez ariel.martinez@sol.info.unlp.edu.ar Belena Zulaica - belena.zulaica@sol.info.unlp.edu.ar Carolina Miceli -carolina.miceli@sol.info.unlp.edu.ar

Contenido
Introduccin Qu es SQL Server? Arquitectura de bases de datos
Componentes lgicos Arquitectura fsica

Administracin de bases de datos


Administrador de servicios Administrador corporativo Analizador de consultas SQL Analizador de SQL Importar y exportar datos Arquitectura de la copia de seguridad o restauracin Administracin automatizada Administrar la seguridad

Contenido
Registrar un servidor SQL Server Creacin de bases de datos Creacin de tablas Creacin de diagramas de base de datos Creacin de procedimientos almacenados Secuencia de comandos SQL Declaraciones de variables Transacciones Cursores Tablas temporales locales

Contenido
Ejecucin de una cadena de caracteres Registro y utilizacin de DLL

Qu es SQL Server?
Sistema gestor de bases de datos relacionales Almacena datos estructurados en forma de tablas relacionales Escucha un puerto TCP/IP a travs del cual acepta conexiones de clientes autentificados Permite conexiones simultneas Admite comandos en lenguaje SQL

Arquitectura de bases de datos


Los datos de una base de datos estn organizados en los componentes lgicos visibles para los usuarios (tablas, vistas, procedimientos)

Una base de datos est implementada fsicamente como dos o ms archivos de disco SQL Server tiene 4 bases de datos del sistema (master, model, tempdb y msdb) y tiene una o varias bases de datos de usuario

Bases de datos del sistema


Master
Registra toda la informacin del sistema de SQL Server Registra todas las cuentas de inicio de sesin y todas las opciones de configuracin del sistema Registra la existencia del resto de bases de datos, incluida la ubicacin de los archivos de base de datos Registra la informacin de inicializacin de SQL Server

Bases de datos del sistema


Tempdb
Almacena todas las tablas y todos los procedimientos almacenados temporales Se vuelve a crear cada vez que se inicia SQL Server De forma predeterminada, crece automticamente segn sea necesario al mismo tiempo que se ejecuta SQL Server

Bases de datos del sistema


Model
Plantilla para todas las bases de datos creadas en un sistema Cuando se emite una instruccin CREATE DATABASE, la primera parte de la base de datos se crea copiando el contenido de la base de datos model Siempre tiene que existir en un sistema SQL Server

Bases de datos del sistema


Msdb
Es utilizada por el Agente SQL Server para programar alertas y trabajos, y para registrar operadores

Componentes lgicos de la base de datos


Los datos de una base de datos de SQL Server estn organizados en varios objetos diferentes Estos objetos son lo que el usuario puede ver cuando se conecta a la base de datos:
Restricciones Tablas Valores predeterminados Triggers ndices Tipos de datos definidos por el usuario Claves Funciones definidas por el usuario Procedimientos almacenados Vistas

Arquitectura fsica de la base de datos


Archivos de datos principales
Punto de partida de la base de datos Apunta a los otros archivos de la base de datos Cada base de datos tiene un archivo de datos principal La extensin de nombre de archivo recomendada es .MDF

Arquitectura fsica de la base de datos


Archivos de datos secundarios
Todos los archivos de datos menos el archivo de datos principal Puede que algunas bases de datos no los tengan, otras pueden tener varios La extensin de nombre de archivo recomendada es .NDF

Arquitectura fsica de la base de datos


Archivos de registro
Almacenan toda la informacin de registro que se utiliza para recuperar la base de datos Como mnimo, tiene que haber un archivo de registro por cada base de datos. La extensin de nombre de archivo recomendada es .LDF

Las ubicaciones de todos los archivos se graban en:


base de datos master archivo principal de la base de datos

Administracin de SQL Server


Provee muchas herramientas grficas y asistentes para guiar a los administradores y los programadores por los pasos necesarios para realizar complejas tareas administrativas Algunos de ellos:
Administrador de servicios Administrador corporativo Analizador de consultas SQL Analizador de SQL Importar y exportar datos

Administrador de servicios
En una aplicacin de la barra de tareas Se utiliza para iniciar, detener y pausar los componentes de Microsoft SQL Server en el servidor (los componentes se ejecutan como servicios) Algunos servicios son:
Servicio SQL Server Servicio SQLServerAgent Servicio MSDTC

Administrador de servicios
Servicio SQL Server
Implementa el motor de la base de datos de SQL Server Gestiona los archivos de bases de datos Procesa sentencias SQL Asegura la consistencia de los datos Existe un servicio de SQL Server para cada instancia que se ejecuta en el equipo

Administrador de servicios
Servicio SQLServerAgent
Implementa el agente que ejecuta las tareas administrativas programadas de SQL Server Soporta planificacin y ejecucin de trabajos, alertas, notificaciones y planes de mantenimiento de bases de datos Existe un servicio del Agente de SQL Server para cada instancia que se ejecuta en el equipo

Administrador de servicios
Servicio MSDTC (slo Windows NT y Windows 2000)
Administra las transacciones distribuidas Slo existe un servicio, independientemente del nmero de las instancias de SQL Server en el equipo

Administrador corporativo
Herramienta principal que presenta una interfaz comn para administrar distintas aplicaciones de servidor Permite a los usuarios:
Definir grupos de servidores SQL Server Registrar y configurar servidores individuales dentro de un grupo Administrar seguridad de inicios de sesin, crear usuarios y permisos en los servidores registrados Disear y probar de forma interactiva instrucciones SQL y secuencias de comandos al invocar al Analizador de consultas SQL Configurar y administrar bases de datos, tablas, ndices, vistas, procedimientos almacenados, reglas, dispositivos de copia de seguridad Invocar los distintos asistentes definidos en SQL Server

Analizador de consultas SQL


Interfaz grfica de usuario para disear y probar interactivamente instrucciones Transact-SQL y secuencias de comandos Ofrece:

Editor de texto en formato libre para escribir instrucciones Transact-SQL Examinador de objetos y herramientas de bsqueda de objetos Templates para acelerar el desarrollo de instrucciones Transact-SQL Resultados presentados en una cuadrcula o en una ventana de texto Diagrama grfico de la informacin del plan de ejecucin de una instruccin Transact-SQL.(permite determinar qu parte concreta de una consulta de bajo rendimiento utiliza gran cantidad de recursos)

Analizador de SQL
Herramienta que captura los sucesos del servidor Los sucesos se guardan en un archivo de traza que se puede analizar o utilizar para reproducir pasos consecutivos concretos cuando se intenta diagnosticar un problema Se utiliza en actividades como:
Seguir los pasos de consultas con problemas para buscar la causa de los mismos Buscar y diagnosticar consultas de bajo rendimiento Capturar el conjunto de instrucciones SQL que causaron un problema

Importar y exportar datos


La importacin de datos es el proceso de recuperar datos desde orgenes externos e insertarlos en tablas de SQL Server La exportacin de datos es el proceso de extraer datos desde una instancia de SQL Server a formatos especificados por el usuario

Importar y exportar datos


Se utilizan los servicios de transformacin de datos (DTS) para importar y exportar datos entre orgenes de datos OLE DB y ODBC heterogneo Los orgenes de datos pueden ser:
archivos de texto orgenes de datos ODBC (como bases de datos de Oracle) orgenes de datos OLE DB (como otras instancias de SQL Server) archivos de texto ASCII hojas de clculo de Microsoft Excel

Arquitectura de la copia de seguridad o restauracin Opciones de copia de seguridad y restauracin:


Copia de seguridad completa de la base de datos Copia de seguridad del registro de transacciones Copia de seguridad diferencial (slo copia las pginas de la base de datos modificadas despus de la ltima copia de seguridad completa de la base de datos) Una restauracin de un archivo o un grupo de archivos permite recuperar slo la parte de la base de datos que estaba en el disco daado

Administracin automatizada
Funciones de automatizacin de:
Tareas de administracin de las bases de datos, como la programacin de las copias de seguridad Procesos internos implementados en la base de datos, como la ejecucin de aplicaciones a intervalos u horas preestablecidos

El Agente SQL Server ejecuta trabajos administrativos y alertas definidas por los administradores del sistema

Administracin automatizada
Trabajos
Serie especfica de operaciones que el Agente SQL Server realiza secuencialmente Cada trabajo tiene uno o varios pasos Cada paso especifica una instruccin Transact-SQL, un comando de Windows, un programa ejecutable Los trabajos se pueden ejecutar una vez, se pueden programar para que se ejecuten a intervalos peridicos o se puede especificar que se ejecuten cuando el servidor est inactivo

Administrar la seguridad
Una base de datos debe tener un sistema de seguridad slido para controlar qu actividades se pueden realizar y qu informacin se puede ver y modificar Cada usuario debe obtener acceso a una instancia de SQL Server a travs de una cuenta de inicio de sesin que establece su capacidad para conectarse (autenticacin). Luego, esta cuenta de inicio de sesin se asigna a una cuenta de usuario de SQL Server que se utiliza para controlar las actividades realizadas en la base de datos (validacin de permisos)

Administrar la seguridad
Si en una base de datos no hay ninguna cuenta de usuario, el usuario no podr tener acceso a ella, aunque pueda conectarse a una instancia de SQL Server La administracin de permisos incluye la concesin o revocacin de los derechos de usuario para:
Trabajar con datos y ejecutar procedimientos (permisos de objeto) Crear una base de datos o un elemento en la base de datos (permisos de instruccin) Utilizar los permisos concedidos a los propietarios de objetos de base de datos (permisos implcitos)

Registrar un servidor SQL Server


Se debe registrar primero un servidor local o remoto para poder administrarlo con el Administrador corporativo de SQL Server Cuando se registre un servidor, debe especificarse:
El nombre del servidor El tipo de seguridad utilizada para iniciar sesiones en el servidor El nombre de inicio de sesin y la contrasea El nombre del grupo donde desea que se muestre el servidor despus de registrarlo

Creacin de bases de datos


Cuando se cree una base de datos, debe especificarse:
El nombre de la base de datos El propietario (el usuario que crea la base de datos) El tamao Los archivos y grupos de archivos utilizados para almacenarla

Para crear una base de datos se debe tiener el permiso correspondiente

Creacin de tablas
Las tablas se almacenan en los archivos de la base de datos hasta que son eliminadas Estn disponibles para cualquier usuario que cuente con los permisos correspondientes Pueden crearse desde el Administrador Corporativo o usando cdigo Transact-SQL:
CREATE TABLE CLIENTE ( numero int IDENTITY PRIMARY KEY, nombre varchar(50) NOT NULL)

Creacin de diagramas de base de datos

Herramienta visual que permite disear y visualizar una base de datos a la que se est conectado Se pueden crear uno o varios diagramas que muestren una parte o la totalidad de las tablas, columnas, claves y relaciones pertenecientes a ella

Creacin de diagramas de base de datos

Cada relacin puede aparecer con tres caractersticas diferentes: Puntos finales (Si la relacin es de uno a uno o de uno a varios) Estilo de lnea (Si exige la integridad referencial para la relacin cuando se agregan datos nuevos a la tabla de claves externas) Tablas relacionadas (Si existe una relacin de clave externa entre las tablas )

Creacin de procedimientos almacenados


Procedimiento almacenado
Coleccin precompilada de instrucciones Transact-SQL almacenadas bajo un nombre y procesadas como una unidad SQL Server suministra procedimientos almacenados para administrar SQL Server y para visualizar informacin sobre bases de datos y usuarios Componentes principales
Especificacin del nombre del procedimiento y sus parmetros Cuerpo del procedimiento que contiene las instrucciones de Transact-SQL que pueden realizar las operaciones del procedimiento

Procedimientos almacenados
Ventajas:
Permiten una programacin modular Permiten una ejecucin ms rpida Pueden reducir el trfico de red Pueden utilizarse como mecanismo de seguridad

Procedimientos almacenados
Ejemplo:
CREATE PROCEDURE AgregarCompra @codigoProducto @numeroCliente int, int

AS INSERT INTO COMPRA (codigo_Producto, numero_Cliente) VALUES (@codigoProducto, @numeroCliente)

Secuencia de comandos sql


Generar secuencias de comandos a partir de los objetos de una base de datos existente Agregar esos objetos a otra base de datos mediante la ejecucin de las secuencias de comandos en esa base de datos

Declaraciones de variables

--declara la variable @nombre DECLARE @nombre varchar(50) --asigna un valor a la variable @nombre SET @nombre = Juan% --utiliza la variable @nombre en una consulta SELECT * FROM CLIENTE WHERE nombre LIKE @nombre

Transacciones
Iniciar transacciones
Transacciones explcitas, mediante la instruccin BEGIN TRANSACTION Transacciones de confirmacin automtica, cada instruccin individual de Transact-SQL se confirma cuando termina. No se tienen que especificar instrucciones para controlar las transacciones. Modo predeterminado de SQL Server Transacciones implcitas, mediante la instruccin SET IMPLICIT_TRANSACTIONS ON de Transact-SQL. Inicia automticamente una nueva transaccin. Cuando se concluye la transaccin, la instruccin de Transact-SQL siguiente inicia una nueva transaccin

Transacciones
Finalizar transacciones
Instruccin COMMIT
Garantiza que todas las modificaciones de la transaccin se convierten en una parte permanente de la base de datos Libera recursos que utiliza la transaccin como, por ejemplo, los bloqueos

Instruccin ROLLBACK
Deshace todas las modificaciones realizadas en la transaccin al devolver los datos al estado en que estaban al inicio de la transaccin Libera los recursos que mantiene la transaccin

Transacciones
@@TRANCOUNT
BEGIN TRANSACTION incrementa @@TRANCOUNT en 1 COMMIT TRANSACTION
Si @@TRANCOUNT es 1, hace que todas las modificaciones efectuadas desde el inicio de la transaccin sean permanente, libera los recursos mantenidos por la conexin y reduce @@TRANCOUNT a 0 Si @@TRANCOUNT es mayor que 1, slo reduce @@TRANCOUNT en 1

ROLLBACK TRANSACTION disminuye la funcin del sistema @@TRANCOUNT a 0, mientras que ROLLBACK TRANSACTION con savepoint_name no disminuye @@TRANCOUNT

Transacciones
@@ERROR
Funcin del sistema Devuelve 0 si la ltima instruccin Transact-SQL se ejecut con xito; si la instruccin caus un error, devuelve el nmero de error Una de las utilizaciones ms comunes de @@ERROR es indicar si un procedimiento almacenado se ha ejecutado correctamente o no

Transacciones
Transaccin anidadas
Aunque la instruccin COMMIT TRANSACTION tiene el parmetro transaction_name, no hay relacin entre las instrucciones COMMIT TRANSACTION y BEGIN TRANSACTION Los parmetros transaction_name slo son ayudas para que el programador pueda asegurarse de que escribe el nmero apropiado de confirmaciones para reducir @@TRANCOUNT hasta 0, confirmando as la transaccin ms externa

Transacciones
Ejemplo simple de una transaccin:
CREATE PROCEDURE
@precio @codigo AS BEGIN TRANSACTION Update PRODUCTO set PRECIO = @precio where codigo = @codigo If @@Error <> 0 begin ROLLBACK TRANSACTION Return @@ERROR end else begin COMMIT TRANSACTION Return @@ERROR

ModificarPrecioDeArticulo
float, int

end

Transacciones
Ejemplo de transacciones anidadas:
DECLARE @IdCliente INT BEGIN TRANSACTION Transaccion1 -- @@TRANCOUNT seteado to 1.

INSERT INTO CLIENTE VALUES ('Maria','3 y 50', '') SELECT @ IdCliente = @@IDENTITY BEGIN TRANSACTION Transaccion2 -- @@TRANCOUNT seteado to 2.

INSERT INTO PRODUCTO VALUES (20, 'BORRADOR', 10) BEGIN TRANSACTION Trasaccion3 -- @@TRANCOUNT seteado to 3.

INSERT INTO COMPRA VALUES (20,@IDcLIENTE ) COMMIT TRANSACTION Trasaccion3 COMMIT TRANSACTION Trasaccion2 COMMIT TRANSACTION Trasaccion1 -- Decrementa @@TRANCOUNT a 2. -- Decrementa @@TRANCOUNT a 1. -- Decrementa @@TRANCOUNT a 0.

Cursores
El conjunto de filas que devuelve una instruccin SELECT se conoce como el conjunto de resultados Los cursores son un mecanismo que amplan el procesamiento de los resultados Permiten situarse en filas especficas del conjunto de resultados Aceptan modificaciones de los datos de las filas en la posicin actual del conjunto de resultados

Cursores
DECLARE cursor_cliente CURSOR FOR SELECT nombre, direccion FROM CLIENTE OPEN cursor_cliente FETCH NEXT FROM cursor_cliente WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM cursor_cliente END CLOSE cursor_cliente DEALLOCATE cursor_cliente

Cursores
DECLARE @nombre VARCHAR(50) DECLARE @direccion VARCHAR(50) DECLARE cursor_cliente CURSOR FOR SELECT nombre, direccion FROM CLIENTE ORDER BY nombre OPEN cursor_cliente FETCH NEXT FROM cursor_cliente INTO @nombre, @direccion WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Cliente: ' + @nombre FETCH NEXT FROM cursor_cliente INTO @nombre, END CLOSE cursor_cliente DEALLOCATE cursor_cliente

@direccion

Cursores
Utilizar FETCH para almacenar valores en variables
FETCH NEXT FROM cursor_cliente INTO @nombre, @direccion

@@FETCH_STATUS
Devuelve el estado de la ltima instruccin FETCH de cursor ejecutada sobre cualquier cursor que la conexin haya abierto Es global para todos los cursores de una conexin Retorna 0 si la instruccin FETCH se ejecut correctamente, Retorna 1 si la instruccin FETCH ha finalizado con error o la fila estaba ms all del conjunto de resultados Retorna 2 si falta la fila recuperada

Tablas temporales locales


Se diferencian por el prefijo # delante del nombre de las tablas temporales locales El nombre de una tabla temporal se almacena en la tabla sysobjects de tempdb Se crean mediante la instruccin CREATE TABLE Se quitan automticamente cuando estn fuera de mbito, a menos que ya se hayan quitado explcitamente mediante DROP TABLE:

Tablas temporales locales


create table #tmp_compras ([nombreCliente] varchar(50), [codigoArticulo] int, [descripcion] varchar(50)) insert into #tmp_compras (nombreCliente, codigoArticulo, descripcion) select nombre, codigo, descripcion from COMPRA, CLIENTE, PRODUCTO where COMPRA.codigo_producto = PRODUCTO.codigo and COMPRA.numero_cliente = CLIENTE.numero drop table:#tmp_compras

Ejecucin de una cadena de caracteres


Permite crear grandes cadenas para ejecucin dinmica Las instrucciones incluidas en la instruccin EXECUTE no se compilan hasta que se ejecute la instruccin EXECUTE til cuando las consultas varan segn parmetros definidos por el usuario. Por ejemplo: la ordenacin del resultado de la consulta por distintos campos, filtrado por slo algunos parmetros

Ejecucin de una cadena de caracteres


declare @consulta varchar(800) set @consulta = 'SELECT C.nombre, P.* FROM COMPRA, CLIENTE C, PRODUCTO P WHERE C.numero = COMPRA.numero_cliente AND P.CODIGO = COMPRA.codigo_producto ' if(@codigoProducto != 0) set @consulta= @consulta + ' AND P.codigo = ' + CAST(@codigoProducto as varChar) set @consulta= @consulta + ' ORDER BY ' + ltrim(rtrim(@nombreCampo)) + ' ' + ltrim(rtrim(@tipoOrden)) exec (@consulta)

Registro y utilizacin de DLL


Registrar la DLL usando el comando regsvr32 Una vez registrada, es posible utilizarla dentro del cdigo Transact-SQL Ejemplo Encrypt.dll, maneja en encriptado y desencriptado de cadena de caracteres

Registro y utilizacin de DLL


declare declare declare declare @enc int @hr int @enc_contrasenia varchar(50) @contrasenia varchar(50)

set @contrasenia = 'BELENA' -- encripta la clave ingresada EXEC @hr=sp_OACreate 'encrypt.Encrypter', @enc OUT EXEC @hr=sp_oaMethod @enc, 'encrypt', @enc_contrasenia out, @contrasenia EXEC sp_oadestroy @enc print @enc_contrasenia

Muchas gracias

Você também pode gostar