45
http://www.desarrolladoras.org.ar SQL SERVER 2008 Para desarrolladores

(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

Embed Size (px)

DESCRIPTION

(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

Citation preview

Page 1: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

SQL SERVER 2008Para desarrolladores

Page 2: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

SQL SERVER 2008

Gabriela Marina GilesMCT – MCTS

Instructor Senior .NET

Oradora Regional de INETALatam

Líder y co-fundadora del Grupo desarrollador@s

[email protected]

Para desarrolladores

Page 3: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

¿Que es SQL Server?

¿Que es SQL?

¿Qué es Transact-SQL?

Page 4: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Bases de Datos

• Sistema:

– Master

– Model

– TemDB

– MSDB

• Usuarios:

– AdventureWorks

– NorthWind(2000)

– Otras

Page 5: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

SQL es agrupado en 3

categorías:

1. DDL - Data Definition Language

2. DCL - Data Control Language

3. DML - Data Manipulation Language

Page 6: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Data Definition Language

• CREATE

• ALTER

• DROP

• EJEMPLO:

CREATE TABLE / CREATE PROC / CREATE

VIEW

Page 7: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Los permisos para

sentencias DDL

• Pertenecer al roles:

– Sysadmin (servidor)

– Dbcreator (servidor) y db_owner (Base de datos)

– db_ddladmin (Base de datos).

Page 8: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO DDL

Page 9: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Los 4 nombres

• SQL Server 2000

– Servidor.base.propietario.objeto

• SQL Server 2005-2008

– Servidor.base.esquema.objeto

Ver esquemas de AdventureWorks

Page 10: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Data Control Language

• GRANT

• DENY

• REVOKE

• Los permisos para poder ejecutar estas

sentencias son, pertenecer al grupo

sysadmin o dbcreator y db_owner o

db_securityadmin

Page 11: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO DCL

Page 12: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Data Manipulation Language

• INSERT

• UPDATE

• DELETE

• SELECT

Page 13: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

INSERT

• Nueva sintaxis para cláusula VALUES

– Ahora devuelve una tabla relacional con

múltiples filas

• Uso con la sentencia INSERT

– Para insertar múltiples filas como

operación unica.

Page 14: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO INSERT - UPDATE

Page 15: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Tipos de datos

Los tipos de datos de SQL Server se organizan en

las siguientes categorías:

Numéricos exactos Cadenas de caracteres Unicode

Numéricos aproximados Cadenas binarias

Fecha y hora Otros tipos de datos

Cadenas de caracteres

ms-

help://MS.SQLCC.v10/MS.SQLSVR.v10.es/s10de_1devconc/html

/63de7291-e226-45cd-9526-6b11b7c3c3f2.htm

Page 16: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Nuevos Tipos de datos

• DATE

– Almacena solamente fechas, sin la

porción de tiempo.

– Rango ampliado de fechas:

• Enero 01, 0001 – Diciembre 31, 9999

– 3 Bytes de espacio

Page 17: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Nuevos Tipos de datos• TIME

– Almacena solamente tiempo, sin la porción de

fecha.

– Rango ampliado de fracción de segundos

(hasta nanosegundos):

• 00:00:00.0000000 – 23:59:59.9999999

– 3 - 5 Bytes de espacio (dependiendo de la

precisión).

– No es dependiente de la zona horaria (GMT).

Page 18: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Nuevos Tipos de datos

• DATETIME2– Rango ampliado de fecha y fracción de segundos:

• Enero 01, 0001 – Diciembre 31, 9999

• 00:00:00.0000000 – 23:59:59.9999999

– 6 - 8 Bytes de espacio (dependiendo de la precisión).

– Hay nuevas funciones del sistema que retornan valores DATETIME2:

• SYSDATETIME()

• SYSUTCDATETIME()

– Nuevos argumentos para DATEPART y DATEDIFF:

• MICROSECOND (MCS)

• NANOSECOND (NS)

– No es dependiente de la zona horaria (GMT).

Page 19: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Nuevos Tipos de datos

• DATETIMEOFFSET

– Contiene todas las características de DATETIME2:

• Enero 01, 0001 – Diciembre 31, 9999

• 00:00:00.0000000 – 23:59:59.9999999 +- 14:00

– DIFERENCIAS:

• 8 - 10 Bytes de espacio (dependiendo de la precisión).

• Hay nuevas funciones del sistema:

– SYSDATETIMEOFFSET()

– SWITCHOFFSET()

– TODATETIMEOFFSET()

– DATENAME(TZOffset, <value>)

– Dependiente de la zona horaria (GMT).

• Se puede almacenar el tiempo local y hacer reportes usando UTC sin realizar cambios al esquema.

Page 20: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Demos Tipos de datos

Page 21: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Variables

• Las variables se declaran con un @

delante del nombre.

– DECLARE @city varchar(50)

• Se pueden modificar las variables y

parametros con SET o SELECT

– DECLARE @city varchar(50)

– SET @city=‘Quilmes’

– SELECT @city

Page 22: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Inicialización y asignación de

variables • Una pequeña mejora introduce SQL Server 2008 al lenguaje T-SQL

respecto de la inicialización y asignación de variables. :

declare@fecha datetime = getdate(),@edad int = 33,@nombre varchar(100) = ‘gaby';

-- Muestro los valores...select @fecha, @edad, @nombre

En versiones anteriores hubiésemos obtenido el siguiente error de sintaxis:

Msg 139, Level 15, State 1, Line 0Cannot assign a default value to a local variable.

DEMO Inicialización y asignación de variables

Page 23: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Stored Procedures

Código escrito en T-SQL, compilado y

almacenado en el SQL Server

Page 24: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Seguridad por encriptación

Por qué ?

Performance frente a recompilaciones

constantes

Centralización del código

Seguridad por derechos de ejecución

Stored Procedures

Page 25: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Stored Procedures

• Definidos por el usuario

• Los de sistema

Page 26: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Stored Procedures

Operaciones posibles

Crear

Eliminar

Modificar

CREATE PROCEDURE

ALTER PROCEDURE

DROP PROCEDURE

Page 27: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Parametros

• INPUT

• OUTPUT

• RETURN VALUE

Page 28: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO SP

Page 29: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Valores Tipo “Tabla” como

Parámetros• Escenarios

– Actualización en lotes del servidor

– Parámetros en lotes para usar en una

consulta

– Migración de base de datos

– Pasar una tabla entre rutinas

• Criterio común

– Gran cantidad de datos pasados del cliente al

servidor

Page 30: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Valores Tipo “Tabla” como

Parámetros• Tipo de tabla definida por el usuario

– Nuevo tipo definido por el usuario

– Sintaxis basada en Create Type

– Se pueden definir índices y restricciones

– Nueva vista de catalogo para tipos de datos

tablas. Sys.Tables_Types

Page 31: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Valores Tipo “Tabla” como

Parámetros

Page 32: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Valores Tipo “Tabla” como

Parámetros• Rendimiento

– Se puede especificar un ordenamiento y clave única

– Evita la re compilación de la sentencia

– No necesita de un bloqueo desde el cliente para inicializar los valores de la tabla.

– Reducción de idas y vueltas al servidor

– Operaciones basadas en conjunto

– Transporte de datos eficiente

Page 33: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO PARAMETRO TABLA

Page 34: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Merge

• Permite procesar múltiples cambios en una sola instrucción

• Sintáxis:

MERGE <target>

USING <source>

ON (<joincondition>)

WHEN MATCHED [AND…] THEN…

WHEN NOT MATCHED THEN…

WHEN SOURCE NOT MATCHED THEN…

Page 35: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Merge

MERGE dbo.Tabla1 AS TargetUSING (SELECT ID,Campo1,Campo2,Campo3 FROM dbo.Tabla2) AS SourceON (Target.ID = Source.ID)WHEN MATCHED THEN

UPDATESET Target.Campo1 = Source.Campo1, Target.Campo2 = Source.Campo2

WHEN NOT MATCHED BY TARGET THEN

INSERT (ID,Campo1,Campo2,Campo3)VALUES (Source.ID,Source.Campo1,Source.Campo2, Source.Campo3)

WHEN NOT MATCHED BY SOURCE THEN

DELETE;

Page 36: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Capturar salida:

• Clausula OUTPUT que permite capturar todo lo que sucedió dentro de una operación INSERT/DELETE/UPDATE.

• En SQL Server 2008 el uso conjunto de MERGE + OUTPUT nos sirve saber que registros fueron modificados y que acción se hizo sobre ese registro (INSERT, UPDATE o DELETE).

• La nueva función $action indica que operación se realizó, mientras que los atributos deleted e inserted guardan la información sobre el registro afectado (de la misma manera que funcionan con los triggers).

Page 37: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

MERGE dbo.Tabla1 AS TargetUSING (SELECT ID,Campo1,Campo2,Campo3 FROM dbo.Tabla2) AS SourceON (Target.ID = Source.ID)WHEN MATCHED THEN

UPDATE SET Target.Campo1 = Source.Campo1, Target.Campo2 = Source.Campo2

WHEN NOT MATCHED BY TARGET THEN

INSERT (ID,Campo1,Campo2,Campo3)VALUES (Source.ID,Source.Campo1,Source.Campo2, Source.Campo3)

WHEN NOT MATCHED BY SOURCE THEN

DELETE

OUTPUT $action, deleted.*, inserted.*;

Resultado:

Page 38: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO MERGE

Page 39: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Tipo de datos FileStream

• Algunas de las características de este nuevo tipo de datos son:

• Almacena grandes ficheros de datos binarios no estructurados directamente

en un sistema de ficheros NTFS: documentos, imágenes, etc.

• Se preserva el control por parte de la BD y la consistencia transaccional.

• Un ejemplo de uso de FILESTREAM es la posibilidad de controlar mediante la base de datos una carpeta de archivos de vídeo.

Page 40: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

características de FILESTREAM

• Es un atributo de una columna varbinary(max).

• Especifica que la columna se ha de almacenar en el sistema de ficheros NTFS: – La columna sigue siendo manejable mediante comandos T-SQL.

– Se puede acceder desde el sistema de ficheros y desde la API del SO.

• Se implementa como una columna varbinary(max) en la que los datos son guardados como BLOBs en el sistema de ficheros: – EL tamaño máximo de los BLOBs viene limitado únicamente por

el tamaño del volumen de almacenamiento.

– La limitación estándar de los tipos varbinary(max) de 2 GB no se aplican a estos BLOBs que se almacenan en el sistema de ficheros.

Page 41: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

¿Cuándo es recomendable

utilizar el tipo de datos

FILESTREAM?

• Se necesita almacenar objetos que

ocupan como media más de 1 MB.

• Es importante el acceso rápido en modo

lectura.

Page 42: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

DEMO

Page 43: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

LINQ

• El Lenguaje de Consultas Integrado LINQ, nos permite realizar consultas a una fuente de datos utilizando lenguajes de programación manejados tales como Visual Basic.NET o C#, en lugar de usar sentencias SQL.

• Utilizaremos una sintaxis consistente para obtener datos de diversas fuentes de datos, incluyendo datos relacionales, entidades, XML, DataSets de ADO.NET, y colecciones de objetos en memoria. Esta nueva sintaxis embebida en un lenguaje de propósito general adquiere todos sus beneficios: validación de tipos, revisión de errores al momento de la codificación, etc.

Page 44: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Para otra presentación

• Más de tipos de datos:

– Soporte para datos Espaciales (geográficos /

geométricos)

• LinQ

• Mejoras en XML

• Framework Sincronización para aplicaciones

offline/cache

Page 45: (25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008

http://www.desarrolladoras.org.ar

Gabriela Marina GilesMCT – MCTS

Instructor Senior .NET

Oradora Regional de INETALatam

Líder y co-fundadora del Grupo desarrollador@s

[email protected]

?Gracias!