41
SQL SERVER PARTE I Félix Tovar C.I: 19291058 Daniel Hernández C.I: 20594114

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

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Félix Tovar C.I: 19291058 Daniel 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.

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

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.

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

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

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

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.

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

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.

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

7

Servicios

SQL Server incluye cuatro servicios:

MSSQLServer SQLServerAgent

MSDTC Microsoft Search

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

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.

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

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.

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

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

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

11

Características de los índices

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

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

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

12

Como crear un índice en SQL Server

Sentencia SQL:

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

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

13

Concurrencia

SQL server usa 3 enfoques de control de transacciones.

Enfoque Mixto

Enfoque Optimista

Enfoque Pesimista

s

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

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.

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

15

Recuperación

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

registros.

Fases de RestauraciónCopia de

datos Rehacer Deshacer

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

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).

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

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 ] } [;]

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

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 ] } ][;]

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

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 ] } ][;]

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

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 ] ][;]

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

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.

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

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 ] ][;]

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

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 ] [;]

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

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 ] [;]

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

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 ] ][;]

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

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 ] ] [;]

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

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

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

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  } [ ; ]

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

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.

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

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.

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

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.

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

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.

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

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.

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

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" } ] [ ; ]

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

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.

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

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 ] ) }[ ; ]

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

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.

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

38

Borrar un índice

Ejemplo en SQLServer:

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

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

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.

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

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.

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

¡Gracias por su atención!

¿Preguntas?