Escolar Documentos
Profissional Documentos
Cultura Documentos
Contenido
Introduccin Qu es SQL Server? Arquitectura de bases de datos
Componentes lgicos Arquitectura fsica
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
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
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
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
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)
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)
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
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 )
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
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
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