Félix Tovar C.I: 19291058 Daniel Hernández C.I: 20594114.

Post on 28-Jan-2016

221 views 0 download

Transcript of Félix Tovar C.I: 19291058 Daniel Hernández C.I: 20594114.

SQL SERVER PARTE I

Félix Tovar C.I: 19291058Daniel Hernández C.I: 20594114

SQL Server

Es un sistema administrador para base de datos producido por Microsoft basado en el modelo relacional.

Constituye una alternativa a otros potentes sistemas gestores de base de Datos.

3

Acerca de SQL Server

Soporte de transacciones.

Escalabilidad, estabilidad y seguridad.

Soporta procedimientos almacenados.

Además permite administrar información de otros servidores de datos.

4

Versiones

Versión Año Nombre de la versión Nombre clave

1.0 (OS/2) 1989 SQL Server 1-0 SQL

4.21 (WinNT) 1993 SQL Server 4.21 SEQUEL

6.0 1995 SQL Server 6.0 SQL95

6.5 1996 SQL Server 6.5 Hydra

7.0 1998 SQL Server 7.0 Sphinx

- 1999 SQL Server 7.0 OLAP Tools Plato

8.0 2000 SQL Server 2000 Shiloh

8.0 2003 SQL Server 2000 64-bit Edition Liberty

9.0 2005 SQL Server 2005 Yukon

10.0 2008 SQL Server 2008 Katmai

10.5 2010 SQL Server 2008 R2 Kilimanjaro

5

Arquitectura de SQL Server

Utiliza la arquitectura Cliente / Servidor para coordinar el trabajo entre uno y otro. Dependiendo del tipo de aplicación que se quiera programar dependerá la repartición de la carga de trabajo entre el cliente y el servidor.

6

Componentes

Comandos (DLL - DML).

Cláusulas.

Funciones de Agregado.

El lenguaje SQL está compuesto por comandos, cláusulas, y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y

manipular las bases de datos.

7

Servicios

SQL Server incluye cuatro servicios:

MSSQLServer SQLServerAgent

MSDTC Microsoft Search

8

Manejo de la memoria

Usa un esquema de gestión de memoria que la distribuye acuerdo con un análisis de relación entre costes y beneficios de la memoria.

Adquiere y libera memoria de manera dinámica según sea preciso.

Organiza la memoria que el mismo se asigna en dos regiones distintas: Buffer Pool y MemToLeave.

9

Organización de archivos

Archivos:- Datos principales.- Datos secundarios.- De registro.

Paginas.

Nombres de archivo lógico y físico:- logical_file_name.- os_file_name.

Grupo de archivos.

10

Indices

Facilitan la recuperación de datos, permitiendo el acceso directo y acelerando las búsquedas, consultas y otras operaciones que optimizan el rendimiento general.

• Query Optimizer• B-tree• Rendimiento Óptimo

11

Características de los índices

Agrupado: Dependencia. Hojas. Solo un índice. Agrupados primero.

No Agrupado: Independencia. Diversos índices. Vistas indexadas.

12

Como crear un índice en SQL Server

Sentencia SQL:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name     ON <object> ( column [ ASC | DESC ] [ ,...n ] )

13

Concurrencia

SQL server usa 3 enfoques de control de transacciones.

Enfoque Mixto

Enfoque Optimista

Enfoque Pesimista

s

14

Interbloqueos

Para minimizar el número de interbloqueos se deben considerar las siguientes recomendaciones:

Las transacciones deben ser cortas y afectar al menor número de datos posibles.

Se debe dar preferencia a la utilización de alguna de las técnicas del enfoque optimista.

Es conveniente establecer una prioridad baja para las consultas DSS y una alta para las OLTP.

15

Recuperación

Tipos de recuperación Simple.Completa.Optimizado para cargas masivas de

registros.

Fases de RestauraciónCopia de

datos Rehacer Deshacer

16

Recuperación

BACKUP (Transact-SQL)Hace copia de seguridad de una BD completa de SQL Server para crear una copia de seguridad de la BD, o uno o más archivos o grupos de archivos de la BD para crear una copia de seguridad de archivo (BACKUP DATABASE). Con el modelo de recuperación completa o con el de recuperación optimizado para cargas masivas de registros, realiza la copia de seguridad del registro de transacciones de la BD para crear una copia de seguridad de registros (BACKUP LOG).

17

Respaldar una BD completa

BACKUP DATABASE { database_name | @database_name_var }

  TO <backup_device> [ ,...n ]    [ <MIRROR TO clause> ] [ next-mirror-to ]   [ WITH { DIFFERENTIAL |

<general_WITH_options> [ ,...n ] } [;]

18

Respaldar archivos específicos o un grupo de archivos

BACKUP DATABASE { database_name | @database_name_var }  <file_or_filegroup>

[ ,...n ]   TO <backup_device> [ ,...n ]   [ <MIRROR TO

clause> ] [ next-mirror-to ]  [ WITH { DIFFERENTIAL | <general_WITH_options>

[ ,...n ] } ][;]

19

Respaldo parcial

BACKUP DATABASE { database_name | @database_name_var }  READ_WRITE_FILEGROUPS [ , <read_only_filegroup> [ ,...n ] ]  TO <backup_device> [ ,...n ]   [ <MIRROR TO clause> ] [ next-mirror-to ]  [ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ][;]

20

Respaldar el log de transacciones

BACKUP LOG { database_name | @database_name_var }   TO <backup_device> [ ,...n ]   [ <MIRROR TO clause> ] [ next-mirror-to ]  [ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ][;]

21

Restaurar

RESTORE ( Transact-SQL )Restaura copias de seguridad realizadas con el comando BACKUP. Este comando le permite realizar los siguientes escenarios de restauración: Completa. Parcial. De archivos. De paginas. Del registro de transacciones.

22

Restauración Completa

RESTORE DATABASE { database_name | @database_name_var }  [ FROM <backup_device> [ ,...n ] ] [ WITH {   [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var }  ] | , <general_WITH_options> [ ,...n ] | , <replication_WITH_option>  | , <change_data_capture_WITH_option> | , <FILESTREAM_WITH_option>  | , <service_broker_WITH options>  | , <point_in_time_WITH_options—RESTORE_DATABASE>    } [ ,...n ] ][;]

23

Restauración Parcial

RESTORE DATABASE { database_name | @database_name_var }    <files_or_filegroups> [ ,...n ] [ FROM <backup_device> [ ,...n ] ]    WITH       PARTIAL, NORECOVERY       [  , <general_WITH_options> [ ,...n ]        | , <point_in_time_WITH_options—RESTORE_DATABASE>       ] [ ,...n ] [;]

24

Restauración de Archivos

RESTORE DATABASE { database_name | @database_name_var }    <file_or_filegroup> [ ,...n ] [ FROM <backup_device> [ ,...n ] ]    WITH    {      [ RECOVERY | NORECOVERY ]      [ , <general_WITH_options> [ ,...n ] ]   } [ ,...n ] [;]

25

Restauración de Paginas

RESTORE DATABASE { database_name | @database_name_var } PAGE = 'file:page [ ,...n]'  [ , <file_or_filegroups> ] [ ,...n ] [ FROM <backup_device> [ ,...n ] ]    WITH  NORECOVERY  [ , <general_WITH_options> [ ,...n ] ][;]

26

Restauración del Registro de Transacciones

RESTORE LOG { database_name | @database_name_var }  [ <file_or_filegroup_or_pages> [ ,...n ] ] [ FROM <backup_device> [ ,...n ] ]  [ WITH    {     [ RECOVERY | NORECOVERY | STANDBY =         {standby_file_name | @standby_file_name_var }        ]    | , <general_WITH_options> [ ,...n ]    | , <replication_WITH_option>    | , <point_in_time_WITH_options—RESTORE_LOG>    } [ ,...n ] ] [;]

27

Revertir una BD al punto temporal capturado por una

instantánea de BD

RESTORE DATABASE { database_name | @database_name_var } FROM DATABASE_SNAPSHOT = database_snapshot_name

28

Concurrencia

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)Controla el comportamiento del bloqueo y de las versiones de fila de las instrucciones Transact-SQL emitidas por una conexión a SQL Server.Un ejemplo sencillo:

SET TRANSACTION ISOLATION LEVEL  { READ UNCOMMITTED  | READ COMMITTED  | REPEATABLE READ  | SNAPSHOT  | SERIALIZABLE  } [ ; ]

29

Read UNCOMMITED/COMMITED

READ UNCOMMITTEDEspecifica que las instrucciones pueden leer filas que han sido modificadas por otras transacciones pero todavía no se han confirmado.

READ COMMITTEDEspecifica que las instrucciones no pueden leer datos que hayan sido modificados, pero no confirmados, por otras transacciones. Esto evita lecturas de datos sucios. Otras transacciones pueden cambiar datos entre cada una de las instrucciones de la transacción actual, dando como resultado lecturas no repetibles o datos fantasma. Esta opción es la predeterminada para SQL Server.

30

Repeatable Read

Especifica que las instrucciones no pueden leer datos que han sido modificados pero aún no confirmados por otras transacciones y que ninguna otra transacción puede modificar los datos leídos por la transacción actual hasta que ésta finalice.

31

SNAPSHOT

Especifica que los datos leídos por cualquier instrucción de una transacción sean la versión coherente, desde el punto de vista transaccional, de los datos existentes al comienzo de la transacción.

La transacción únicamente reconoce las modificaciones de datos confirmadas antes del comienzo de la misma. Las instrucciones que se ejecuten en la transacción actual no verán las modificaciones de datos efectuadas por otras transacciones después del inicio de la transacción actual. El efecto es el mismo que se obtendría si las instrucciones de una transacción obtuviesen una instantánea de los datos confirmados tal como se encontraban al comienzo de la transacción.

32

Serializable

Especifica lo siguiente: 

Las instrucciones no pueden leer datos que hayan sido modificados, pero aún no confirmados, por otras transacciones.

Ninguna otra transacción puede modificar los datos leídos por la transacción actual hasta que la transacción actual finalice.

Otras transacciones no pueden insertar filas nuevas con valores de clave que pudieran estar incluidos en el intervalo de claves leído por las instrucciones de la transacción actual hasta que ésta finalice.

33

Índices SQLServer

CREATE INDEX (Transact-SQL)

Crea un índice relacional en una tabla especificada o una vista de una tabla especificada. Se puede crear un índice antes de que la tabla posea datos. Los índices relacionales se pueden crear en tablas o vistas de otra base de datos especificando un nombre completo de base de datos.

34

Crear un índice

Ejemplo en SQLServer:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name     ON <object> ( column [ ASC | DESC ] [ ,...n ] )     [ INCLUDE ( column_name [ ,...n ] ) ] [ WHERE <filter_predicate> ]    [ WITH ( <relational_index_option> [ ,...n ] ) ]    [ ON { partition_scheme_name ( column_name )          | filegroup_name | default  } ] [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ] [ ; ]

35

Índices SQLServer

ALTER INDEX (Transact-SQL)

Modifica un índice existente de una tabla o una vista (relacional o XML) mediante su des habilitación, regeneración o reorganización, o mediante el establecimiento de sus opciones.

36

Modificar índice

Ejemplo en SQLServer:

ALTER INDEX { index_name | ALL }  ON <object>  { REBUILD  [ [PARTITION = ALL]   [ WITH ( <rebuild_index_option> [ ,...n ] ) ]   | [ PARTITION = partition_number     [ WITH ( <single_partition_rebuild_index_option>                        [ ,...n ] )  ] ] ]    | DISABLE  | REORGANIZE  [ PARTITION = partition_number ]    [ WITH ( LOB_COMPACTION = { ON | OFF } ) ]   | SET ( <set_index_option> [ ,...n ] ) }[ ; ]

37

Índices SQLServer

DROP INDEX (Transact-SQL)Quita uno o más índices XML, filtrados, espaciales o relacionales de la base de datos actual. Puede quitar un índice clúster y mover la tabla resultante a otro grupo de archivos o esquema de partición en una sola transacción especificando la opción MOVE TO.

 La instrucción DROP INDEX no es aplicable a los índices creados mediante la definición de restricciones PRIMARY KEY y UNIQUE. Para quitar la restricción y el índice correspondiente, use ALTER TABLE con la cláusula DROP CONSTRAINT.

38

Borrar un índice

Ejemplo en SQLServer:

DROP INDEX{ <drop_relational_or_xml_or_spatial_index> [ ,...n ] | <drop_backward_compatible_index> [ ,...n ]}

39

Ventajas

Soporte de transacciones.

Escalabilidad, estabilidad y seguridad.

Soporta procedimientos almacenados.

Incluye también un potente entorno gráfico de

administración, que Permite el uso de comandos

DDL y DML gráficamente.

Permite trabajar en modo cliente-servidor.

Además permite administrar información de otros

servidores de datos.

40

Desventajas

La principal desventaja de Microsoft SQL SERVER es la

enorme cantidad de memoria RAM que utiliza para la instalación y utilización del software.

Si se quiere para prácticas no va a ser de mucha utilidad porque se prohíben muchas cosas, es decir; tiene grandes restricciones.

La relación calidad-precio esta muy por debajo comparado con Oracle.

¡Gracias por su atención!

¿Preguntas?