Académique Documents
Professionnel Documents
Culture Documents
A. El SQL procedimental
SQL Server es un servidor de base de datos relacional y como tal proporciona todos los elementos para almacenar de forma estructurada los datos, pero tambin las herramientas necesarias para trabajar con los datos mediante SQL. Con Transact SQL tambin es posible definir tratamientos procedimentales directamente en la base de datos. Estos tratamientos podrn ser utilizados por todos los usuarios de la base siempre y cuando posean los privilegios necesarios. Es posible conservar la definicin de estos tratamientos y convertirlos en parametrizables mediante la creacin de funciones y procedimientos. Tambin se pueden establecer tratamientos procedimentales para definir restricciones de integridad complejas. Entonces estaremos hablando de triggers o desencadenadores de base de datos.
Declaracin de variables
DECLARE @nombre_variable tipo [,...]
nombre_variable
Editions ENI - All rights reserved
Nombre precedido del carcter @. tipo Tipo de sistema o definido por el usuario.
189
Captulo 4
Ejemplo Modificacin del nombre de los clientes que tienen el mismo apellido que el 954:
2. Variables de sistema
Estas variables son definidas por el sistema y se pueden utilizar slo en lectura. Se distinguen de las variables de usuario por la doble @. @@CONNECTIONS Nmero de conexiones o de intentos de conexin desde el ltimo inicio de SQL Server. @@CPU_BUSY Tiempo dedicado por la unidad central SQL Server desde el ltimo inicio de ste. El resultado se expresa en unidad CPU. Hay que multiplicar por @@TIMETICKS para tener el resultado en microsegundos. @@CURSOR_ROWS Nmero de filas afectadas en el ltimo cursor abierto.
190
191
Captulo 4
@@MAX_CONNECTIONS Nmero mximo de conexiones simultneas que es posible establecer con SQL Server. @@MAX_PRECISION Devuelve el nivel de precisin utilizado por los tipos de datos decimal y numrico. @@NESTLEVEL Nivel de anidamiento de la instruccin que se esta ejecutando. @@OPTIONS Datos sobre los valores actuales de las opciones SET. @@PACK_RECEIVED Nmero de paquetes entrantes ledos por SQL Server desde su ltimo inicio. @@PACK_SENT Nmero de paquetes salientes escritos por SQL Server desde su ltimo inicio. @@PACKET_ERRORS Nmero de errores que se han producido mientras SQL Server enviaba o reciba paquetes desde su ltimo inicio. @@PROCID Identificador del procedimiento almacenado Transact SQL del tratamiento en curso de ejecucin. @@REMSERVER Devuelve el nombre del servidor contenido en el registro de los nombres de acceso de un servidor remoto.
192
Nmero de lecturas de datos del disco efectuadas por SQL Server desde su ltimo inicio. @@TOTAL_WRITE Nmero de veces que se han escrito datos en el disco efectuadas por SQL Server desde su ltimo inicio. @@TRANCOUNT Nmero de transacciones actualmente activas para el usuario actual.
193
Captulo 4
@@VERSION Fecha, nmero de versin y tipo de procesador de la versin actual de SQL Server.
3. Las transacciones
Gestin de las transacciones
Lo primero que hay que tener en cuenta es el bloqueo de los datos. Cuando SQL Server lee o modifica datos, bloquea las filas que est manipulando. Este bloqueo dura el mismo tiempo que la ejecucin de la instruccin o la transaccin. Segn el tipo de bloqueo, ser posible o no que otras transacciones accedan simultneamente a la misma informacin. Una transaccin es un conjunto de instrucciones de manipulacin de datos que se ejecutan en una misma unidad de trabajo. La validacin de una transaccin asegura que todas las instrucciones que forman parte de sta terminan correctamente. La anulacin de la transaccin asegurar la anulacin del conjunto de las instrucciones. Slo las instrucciones del DML (SELECT, INSERT, UPDATE, DELETE) son tenidas en cuenta en una transaccin. Se excluyen todas las instrucciones que manipulan objetos (CREATE, ALTER, DROP, SELECT INTO, GRANT, REVOKE, LOAD, DUMP...). Las transacciones sern tiles para asegurar la integridad y la coherencia de los datos en modificaciones mltiples, para mejorar el rendimiento, para probar los efectos de una modificacin, para gestionar los bloqueos. Una transaccin se caracteriza por la palabra clave ACID (Atomicity Consistency Isolation Durability) es decir atomicidad, coherencia, aislamiento y durabilidad.
194
Ediciones ENI
Captulo 8
A. Presentacin
La replicacin es una poderosa funcionalidad de SQL Server que permite distribuir datos y ejecutar los procedimientos almacenados sobre varios servidores de la empresa. La tecnologa de replicacin ha evolucionado considerablemente y ahora permite copiar, trasladar los datos a diferentes lugares y sincronizarlos automticamente. La replicacin puede establecerse entre las bases de datos residentes sobre el mismo servidor o sobre servidores diferentes. Los servidores pueden estar sobre una red local (LAN) o global (WAN) o sobre Internet. SQL Server distingue dos grandes categorias de replicacin :
- la coherencia de los datos replicados, - la autonoma de los sitios, 342 SQL Server 2008
343
Captulo 8
En el ejemplo anterior, el cliente efecta una transaccin sobre el servidor al que est conectado. Esta transaccin slo se validar si se ha ejecutado con xito en todos los servidores que participan en la replicacin.
344
Replicacin
En este ejemplo, el cliente enva una transaccin al servidor y esta se ejecuta de manera local inmediatamente. Despus, de forma peridica, los servidores que participan en la replicacin repiten localmente el conjunto de transacciones efectuadas sobre el servidor principal.
Todos los servidores son accessibles en lectura/escritura y las transacciones se ejecutan localmente. Entonces el proceso de replicacin realiza las transacciones sobre los otros servidores teniendo en cuenta las modificaciones que han podido intervenir localmente.
Editions ENI - All rights reserved
345
346
Replicacin
Las entradas a espectculos se venden en varios puntos de venta. Para que el mismo asiento no se venda dos veces, la operacin ms sencilla de ejecutar consiste en asignar a cada punto de venta un nmero de asientos. Por lo tanto, la sala se particiona en funcin de los puntos de venta. Como consecuencia, cada punto de venta gestiona de manera autnoma los asientos que tiene asignados. Por el contrario, cada punto de venta puede saber qu asientos an no han sido vendidos por los otros puntos de venta. Aqu la coherencia transaccional latente es suficiente.
Ejemplo de particionamiento vertical Cada punto de venta de una cadena de tiendas de reparacin de automviles gestiona su propio stock de mercancas y por medio de la informtica conoce el stock de los puntos de venta ms prximos. El conocimiento de este stock se utilizar cuando falte una pieza y sea necesario satisfacer al cliente lo ms rpido posible. Aqu la coherencia transaccional inmediata no es necesaria ya que lo que se necesita es un conocimiento general del stock de la tienda ms cercana (accesible nicamente en modo lectura).
Editions ENI - All rights reserved
4. Tipos de replicacin
Existen tres tipos de replicacin proporcionados por SQL Server:
- Captura instantnea, - Transaccional: captura instantnea y actualizacin inmediata de los suscriptores, - Fusin.
Cada uno de los tipos de replicacin responde a una necesidad bien concreta. Siguiendo el mtodo seleccionado bien convergen los datos, o bien se garantiza la coherencia de las transacciones.
347