(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
1. SQL SERVER 2008
Para desarrolladores
http://www.desarrolladoras.org.ar
2. SQL SERVER 2008
Para desarrolladores
Gabriela Marina Giles
MCT – MCTS
Instructor Senior .NET
Oradora Regional de INETALatam
Líder y co-fundadora del Grupo desarrollador@s
gilesgabriela@yahoo.com.ar
http://www.desarrolladoras.org.ar
3. ¿Que es SQL Server?
¿Que es SQL?
¿Qué es Transact-SQL?
http://www.desarrolladoras.org.ar
4. Bases de Datos
• Sistema:
– Master
– Model
– TemDB
– MSDB
• Usuarios:
– AdventureWorks
– NorthWind(2000)
– Otras
http://www.desarrolladoras.org.ar
5. SQL es agrupado en 3
categorías:
1. DDL - Data Definition Language
2. DCL - Data Control Language
3. DML - Data Manipulation Language
http://www.desarrolladoras.org.ar
6. Data Definition Language
• CREATE
• ALTER
• DROP
• EJEMPLO:
CREATE TABLE / CREATE PROC / CREATE
VIEW
http://www.desarrolladoras.org.ar
7. Los permisos para
sentencias DDL
• Pertenecer al roles:
– Sysadmin (servidor)
– Dbcreator (servidor) y db_owner (Base de datos)
– db_ddladmin (Base de datos).
http://www.desarrolladoras.org.ar
9. Los 4 nombres
• SQL Server 2000
– Servidor.base.propietario.objeto
• SQL Server 2005-2008
– Servidor.base.esquema.objeto
Ver esquemas de AdventureWorks
http://www.desarrolladoras.org.ar
10. 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
http://www.desarrolladoras.org.ar
13. 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.
http://www.desarrolladoras.org.ar
15. 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
http://www.desarrolladoras.org.ar
16. 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
http://www.desarrolladoras.org.ar
17. 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).
http://www.desarrolladoras.org.ar
18. 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).
http://www.desarrolladoras.org.ar
19. 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.
http://www.desarrolladoras.org.ar
21. 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
http://www.desarrolladoras.org.ar
22. 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
http://www.desarrolladoras.org.ar
23. Stored Procedures
Código escrito en T-SQL, compilado y
almacenado en el SQL Server
http://www.desarrolladoras.org.ar
24. Stored Procedures
Por qué ?
Seguridad por encriptación
Performance frente a recompilaciones
constantes
Centralización del código
Seguridad por derechos de ejecución
http://www.desarrolladoras.org.ar
25. Stored Procedures
• Definidos por el usuario
• Los de sistema
http://www.desarrolladoras.org.ar
26. Stored Procedures
Operaciones posibles
Crear CREATE PROCEDURE
Modificar ALTER PROCEDURE
Eliminar DROP PROCEDURE
http://www.desarrolladoras.org.ar
27. Parametros
• INPUT
• OUTPUT
• RETURN VALUE
http://www.desarrolladoras.org.ar
29. 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
http://www.desarrolladoras.org.ar
30. 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
http://www.desarrolladoras.org.ar
32. 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
http://www.desarrolladoras.org.ar
34. 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…
http://www.desarrolladoras.org.ar
35. Merge
MERGE dbo.Tabla1 AS Target
USING (SELECT ID,Campo1,Campo2,Campo3 FROM dbo.Tabla2)
AS Source
ON (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;
http://www.desarrolladoras.org.ar
36. 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).
http://www.desarrolladoras.org.ar
37. MERGE dbo.Tabla1 AS Target
USING (SELECT ID,Campo1,Campo2,Campo3 FROM dbo.Tabla2) AS
Source
ON (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:
http://www.desarrolladoras.org.ar
39. 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.
http://www.desarrolladoras.org.ar
40. 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.
http://www.desarrolladoras.org.ar
41. ¿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.
http://www.desarrolladoras.org.ar
43. 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.
http://www.desarrolladoras.org.ar
44. 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
http://www.desarrolladoras.org.ar
45. ?
Gracias!
Gabriela Marina Giles
MCT – MCTS
Instructor Senior .NET
Oradora Regional de INETALatam
Líder y co-fundadora del Grupo desarrollador@s
gilesgabriela@yahoo.com.ar
http://www.desarrolladoras.org.ar