bienvenidos conferencias técnicas msdn. sql server 2005 para desarrolladores gaston quirque mvp en...
TRANSCRIPT
BIENVENIDOSBIENVENIDOS
Conferencias TécnicasConferencias Técnicas MSDN MSDN
SQL Server 2005SQL Server 2005para desarrolladorespara desarrolladores
Gaston QuirqueGaston QuirqueMVP en SQL ServerMVP en SQL ServerHuddle Group S.A.Huddle Group S.A.
Fecha: 20/04/2006Fecha: 20/04/2006
Ciudad: Buenos AiresCiudad: Buenos Aires
Leandro OlivestroLeandro OlivestroMVP en Mobile DevicesMVP en Mobile DevicesQ4TechQ4Tech
AgendaAgenda
Evolución de la programación en la Evolución de la programación en la base de datosbase de datos
Novedades en T-SQLNovedades en T-SQL
SQL MobileSQL Mobile
Integración con el CLRIntegración con el CLR
EvoluciónEvolución
Modelos no extensiblesModelos no extensibles
Abstracción de los datosAbstracción de los datos
Código propietarioCódigo propietario
Bajo soporte en las Bajo soporte en las herramientasherramientas
Modelos extensiblesModelos extensibles
Tipos abstractos, Tipos abstractos, herencia, excepcionesherencia, excepciones
Librerías mas ricas e Librerías mas ricas e integración con integración con frameworksframeworks
Alta integración con Alta integración con herramientas de herramientas de desarrollodesarrollo
80’s 2006…
Novedades en T-SQLNovedades en T-SQL
T-SQL TopT-SQL Top
TopTopAhora soporta expresiones!Ahora soporta expresiones!
Sentencias DML soportan Top…Random!Sentencias DML soportan Top…Random!
Nuevo parámetroNuevo parámetroWITH TIESWITH TIES
Permite incluir filas adicionalesPermite incluir filas adicionales
Para la última fila de una selecciónPara la última fila de una selección
SELECT TOP(10) WITH TIESSELECT TOP(10) WITH TIES
EmployeeID, RateEmployeeID, Rate
FROM HumanResources.EmployeePayHistoryFROM HumanResources.EmployeePayHistory
ORDER BY rate DESC;ORDER BY rate DESC;
Ejemplos
T-SQL Nuevas funcionesT-SQL Nuevas funcionesNuevas funciones para RankingsNuevas funciones para Rankings
<función> OVER([<partición>] <función> OVER([<partición>] <ordenamiento>)<ordenamiento>)
RANK() y DENSE_RANK()RANK() y DENSE_RANK()Crear rankings Crear rankings
Agrupando y ordenandoAgrupando y ordenando
RANK() deja huecosRANK() deja huecos
NTILE(<expression>) NTILE(<expression>) Distribución en gruposDistribución en grupos
ROW_NUMBER()ROW_NUMBER()No mas inventos para paginar desde el servidor No mas inventos para paginar desde el servidor
Ejemplos
T-SQL nuevas funcionesT-SQL nuevas funciones
OrdenamientoOrdenamientoSeparación del orden de la consulta del Separación del orden de la consulta del orden del rankingorden del ranking
Ideal para análisis de datosIdeal para análisis de datosSELECTSELECTRANKRANK() OVER(ORDER BY <criterio 1>), () OVER(ORDER BY <criterio 1>), RANKRANK() OVER(ORDER BY <criterio 2>), () OVER(ORDER BY <criterio 2>), RANKRANK() OVER(ORDER BY <criterio N>) () OVER(ORDER BY <criterio N>)
FROM <tabla> FROM <tabla> ORDER BY <distinto de RANK>ORDER BY <distinto de RANK>
Ejemplos
T-SQL Try/CatchT-SQL Try/Catch
Manejo estructurado de excepcionesManejo estructurado de excepcionesNuevos operadoresNuevos operadores
Begin Try / End TryBegin Try / End Try
Begin Catch / End CatchBegin Catch / End Catch
No mas @@ERROR No mas @@ERROR Mejora el manejo de transaccionesMejora el manejo de transacciones
Nuevas funciones asociadasNuevas funciones asociadasERROR_NUMBER() , ERROR_MESSAGE() , ERROR_NUMBER() , ERROR_MESSAGE() , etcetc
XACT_STATE() Estado de una TrxXACT_STATE() Estado de una Trx
Ejemplos
T-SQL RecursividadT-SQL RecursividadQueries recursivos Queries recursivos
Ideal para consultas jerárquicasIdeal para consultas jerárquicasEj.:Ej.:
Empleado es supervisado por…Empleado es supervisado por…
Ítem de menú pertenece a ítem padre…Ítem de menú pertenece a ítem padre…
Sintaxis ANSISintaxis ANSI
CTE (Common Table Expressions)CTE (Common Table Expressions)Result sets nombrados temporalesResult sets nombrados temporalesMAXRECURSION hint para evitar loops MAXRECURSION hint para evitar loops infinitosinfinitos
Ejemplos
T-SQL RecursividadT-SQL RecursividadWITH WITH <<CTENameCTEName>> ( < ( <column-listcolumn-list> )> )
ASAS( <( <CTECTE>)>)<<SELECT using CTESELECT using CTE>>
Cuando <CTE> referencia a si mismaCuando <CTE> referencia a si mismaForma recursivaForma recursiva
<non-recursive SELECT><non-recursive SELECT> /* Inicializa */ /* Inicializa */UNION ALLUNION ALL<SELECT referencing CTE><SELECT referencing CTE>/* Acumula *//* Acumula */
Finaliza cuando el 2Finaliza cuando el 2dodo SELECT retorna SELECT retorna un resultado vacíoun resultado vacío
Ejemplos
T-SQL Pivot JoinsT-SQL Pivot Joins
Mostrar filas como Mostrar filas como columnascolumnas
Las columnas son Las columnas son fijas fijas
MakeMake YearYear SalesSales
HondaHonda 19901990 20002000
AcuraAcura 19901990 500500
HondaHonda 19911991 30003000
AcuraAcura 19911991 600600
SELECT *SELECT *FROM T PIVOT(SUM(FROM T PIVOT(SUM(SalesSales) )
FOR FOR YearYear IN IN ([1990], ([1990],
[1991])) t[1991])) t
MakeMake 19901990 19911991HondaHonda 20002000 30003000
AcuraAcura 500500 600600
Ejemplos
T-SQL DatatypesT-SQL DatatypesDatatypesDatatypes
varchar(max), nvarchar(max) y varchar(max), nvarchar(max) y varbinary(max) varbinary(max)
Hasta 2 GB de texto.Hasta 2 GB de texto.
Hay una recomendación específica sobre no Hay una recomendación específica sobre no usar text, ntext e image…¿desaparecen?usar text, ntext e image…¿desaparecen?
sp_tableoption: sp_tableoption: ““large value types out of rowlarge value types out of row””Puntero 16 bytes o todo en la tablaPuntero 16 bytes o todo en la tabla
XML XML Nuevo tipo de datoNuevo tipo de dato
IndexaciónIndexación
Nuevo lenguaje de consulta: XQuery W3CNuevo lenguaje de consulta: XQuery W3C
T-SQL Triggers y metadatosT-SQL Triggers y metadatos
TriggersTriggersDML para controlar actualizaciones al DML para controlar actualizaciones al modelomodelo
FORFORALTER_TABLE, DROP_INDEX, ALTER_TABLE, DROP_INDEX, ALTER_PROCEDURE, ALTER_LOGIN, etc.ALTER_PROCEDURE, ALTER_LOGIN, etc.
Decenas de nuevas vistas de metadatosDecenas de nuevas vistas de metadatossys.assembliessys.assemblies, , sys.assembly_filessys.assembly_files, , sys.databases, etc.sys.databases, etc.
Mobile EditionMobile Edition
SQL Server Mobile Edition:SQL Server Mobile Edition: EvoluciónEvolución
20022002 20032003 20042004 20052005
Pocket PCPocket PCSmartphoneSmartphone PPC 2002PPC 2002 SP 2002SP 2002 WM 2003WM 2003 WM 2003 SEWM 2003 SE WM 2005WM 2005
VisualVisualStudioStudio Visual Visual
Studio Studio 20032003
Visual Visual Studio Studio 20052005
Windows CEWindows CE3.03.0 4.24.2 5.05.0
.NET .NET Compact Compact
FrameworkFramework
4.14.1
1.01.0 SizeSize PortabilityPortability CompatibilityCompatibility
(redist)(redist)
1.0 SP11.0 SP1 SmartphoneSmartphone
1.0 SP21.0 SP2 Perf updatePerf update LandscapeLandscape AutoscrollAutoscroll Bug fixesBug fixes
2.02.0 GenericsGenerics COM interopCOM interop ControlsControls MD3DMMD3DM PerformancePerformance
(redist)(redist)
1.0 SP31.0 SP3 Bug fixesBug fixes
SQL Server CE 1.0SQL Server CE 1.0 SQL Server CE 2.0SQL Server CE 2.0SQL Server SQL Server
Mobile EditionMobile Edition
SQL Server Mobile Edition:SQL Server Mobile Edition: Data Data repositoryrepository / Integration / Integration
CLR / .NET CFCLR / .NET CF
SQL Mobile ArquitecturaSQL Mobile Arquitectura
Client Client Agent: Agent:
ReplicationReplicationandandRDARDA
OLEDB / OLEDB / Replication APIReplication API
IISIIS
CLIENTCLIENT SERVERSERVER
Storage Engine / Repl Storage Engine / Repl TrackingTracking
Server Server Agent: Agent:
ReplicationReplicationandand
Remote Remote Data Data
AccessAccess
HTTPHTTP
802.11b/a/g, 802.11b/a/g, CDPD, GSM, CDPD, GSM,
CDMA, CDMA, TDMA, etc.TDMA, etc.
Enterprise BackendEnterprise Backend
Oracle / db2 / etcOracle / db2 / etc
SQL Mobile SQL Mobile Data ProviderData Provider
Data ProviderData Provider
SQL Server SQL Server Client Data Client Data Provider Provider
ADO.NETADO.NET
Visual Studio 2005 Visual Studio 2005 (VB.NET & C#)(VB.NET & C#)
ManagedManaged StackStack
TDSTDS
EthernetEthernet
Well Well ConnectedConnected
Occasionally Occasionally ConnectedConnected
OLEDB CEOLEDB CE
Visual Visual Studio 2005Studio 2005
Native StackNative Stack
OLEDB ProviderOLEDB Provider
QP/Cursor QP/Cursor Engine/ES Engine/ES
SQL Server MobileSQL Server Mobile
SQL Server Mobile Edition:SQL Server Mobile Edition:New in 2005 (v3)New in 2005 (v3)
Integración SQL 2005 Management Integración SQL 2005 Management Studio and Microsoft Visual Studio 2005 Studio and Microsoft Visual Studio 2005
Multi-user supportMulti-user support
Reutilización automatica de paginas Reutilización automatica de paginas vacias vacias
ACID transactionsACID transactions
New engine and query processorNew engine and query processor
SqlCeResultSet for best performanceSqlCeResultSet for best performance
Etc.Etc.
Anatomía de una aplicación Anatomía de una aplicación debilmente conectadadebilmente conectada
Tareas en el servidor SQLTareas en el servidor SQL
Tareas en el Web ServerTareas en el Web Server
Tareas en SQL mobileTareas en SQL mobile
Construir la aplicaciónConstruir la aplicación
(Como construir una aplicación que sincronize (Como construir una aplicación que sincronize datos a traves de Merge Replication)datos a traves de Merge Replication)
Anatomía de una aplicación Anatomía de una aplicación debilmente conectadadebilmente conectada
Tareas en el servidor SQLTareas en el servidor SQLPreparar datosPreparar datosPreparar servidor para publicacionesPreparar servidor para publicaciones
Tareas en el Web ServerTareas en el Web ServerComponentes de servidor de SQL MobileComponentes de servidor de SQL MobileConfigurar Replicación p/Sincroniz. Web Configurar Replicación p/Sincroniz. Web
Tareas en SQL mobileTareas en SQL mobileCrear baseCrear baseCrear suscripciónCrear suscripción
Construir la aplicación ….Construir la aplicación ….
Anatomía de una aplicación Anatomía de una aplicación debilmente conectada debilmente conectada (cont.)(cont.)
Construir la aplicaciónConstruir la aplicaciónFile > New Project…File > New Project…Add Reference …Add Reference …Agregar conexión de datosAgregar conexión de datosElegir datos a mostrarElegir datos a mostrarCódigo y “cableado”Código y “cableado”Testear..!!Testear..!!
Integración con el CLRIntegración con el CLR
Integración con el CLRIntegración con el CLR
VS .NET VS .NET ProjectProject
Assembly: “TaxLib.dll”
VB,C#,C++VB,C#,C++ BuildBuild
SQL ServerSQL Server
SQL Data Definition:SQL Data Definition: create assembly … create function … create procedure … create trigger … create type …SQL Queries: SQL Queries:
select sum(tax(sal,state)tax(sal,state))from Emp where county = ‘King’
Runtime hosted by SQL
(in-proc)
Integración con el CLRIntegración con el CLR
BeneficiosBeneficiosInfraestructura del Framework .Net Infraestructura del Framework .Net 2.02.0
Utilizar el lenguaje favoritoUtilizar el lenguaje favorito
BCL (Base Class Library)BCL (Base Class Library)
Librerías de tercerosLibrerías de terceros
Mayor poder de procesamientoMayor poder de procesamiento
Backup & Restore deploy Backup & Restore deploy
Integración con el CLRIntegración con el CLRIntegración con VS.NetIntegración con VS.Net
Facilita el Debug y el DeployFacilita el Debug y el Deploy
Integración con ADO.NetIntegración con ADO.Net““Context Connection”Context Connection”
Elevados requerimientos de seguridadElevados requerimientos de seguridadPor defecto no se puede hacer nada!Por defecto no se puede hacer nada!
System.TransactionsSystem.Transactions
Nuevos comandos T-SQL: Create Nuevos comandos T-SQL: Create Assembly, Alter Assembly, etcAssembly, Alter Assembly, etc
Ejemplos
Integración con el CLRIntegración con el CLR““Context Connection” vs. Regular ConnectionsContext Connection” vs. Regular Connections
Integración con el CLRIntegración con el CLRClases especialesClases especiales
SqlContextSqlContextContexto de ejecuciónContexto de ejecución
SqlPipeSqlPipeVínculo con el clienteVínculo con el cliente
Envío de resultados: Send, ExecuteAndSendEnvío de resultados: Send, ExecuteAndSend
SqlTriggerContextSqlTriggerContext
SqlDataRecordSqlDataRecordCrear resultados personalizadosCrear resultados personalizados
Streaming: SendResultStart, SendResultRow, Streaming: SendResultStart, SendResultRow, SendResultEndSendResultEnd
Integración con el CLRIntegración con el CLR
SeguridadSeguridadexec sp_configure 'clr enabled', '1‘exec sp_configure 'clr enabled', '1‘
Permisos para AssembliesPermisos para AssembliesSAFESAFE
EXTERNAL_ACCESSEXTERNAL_ACCESS
UNSAFEUNSAFE
No es tan sencillo acceder a recursos externosNo es tan sencillo acceder a recursos externosALTER DATABASE <MyDb> SET TRUSTWORTHY ONALTER DATABASE <MyDb> SET TRUSTWORTHY ON
También previene: También previene: EXECUTE AS LOGINEXECUTE AS LOGIN
Integración con el CLRIntegración con el CLRPaso a PasoPaso a Paso
Crear una clase manejada para el nuevo Crear una clase manejada para el nuevo objetoobjeto
Namespace: Microsoft.SqlServer.ServerNamespace: Microsoft.SqlServer.Server
CompilarCompilar
Cargar el assemblyCargar el assemblyCREATE ASSEMBLYCREATE ASSEMBLY
Crear el objeto sobre el Assembly creadoCrear el objeto sobre el Assembly creado
ALTER ASSEMBLY para actualizar el ALTER ASSEMBLY para actualizar el códigocódigo
Ejemplos
¿T-SQL o CLR?¿T-SQL o CLR?T-SQLT-SQL
Acceso a datos con poca o ninguna lógica Acceso a datos con poca o ninguna lógica de negociosde negocios
Es mas rápido si hay operaciones Es mas rápido si hay operaciones orientadas a datosorientadas a datos
CLRCLRMucho procesamientoMucho procesamiento
Strings, encripción, acceso a las APIs del Strings, encripción, acceso a las APIs del Framework .NetFramework .Net
Cálculos matemáticos y científicosCálculos matemáticos y científicos
Requiere mayor uso de recursos!Requiere mayor uso de recursos!
ResumenResumen
T-SQL está vigente y tiene mucha T-SQL está vigente y tiene mucha riqueza en las expresionesriqueza en las expresiones
Decenas de nuevas funcionesDecenas de nuevas funciones
Nueva experiencia para el desarrolladorNueva experiencia para el desarrollador
CLR es una nueva posibilidad para CLR es una nueva posibilidad para ambientes específicosambientes específicos
Programas MSDNProgramas MSDNDesarrollador Cinco EstrellasDesarrollador Cinco Estrellas
¿Estás avanzando en el camino de las estrellas?¿Estás avanzando en el camino de las estrellas?www.microsoft.com/spanish/msdn/comunidad/dcewww.microsoft.com/spanish/msdn/comunidad/dce
Plan MASPlan MASCapacitación gratuita y becas laboralesCapacitación gratuita y becas laboraleswww.microsoft.com/argentina/maswww.microsoft.com/argentina/mas
Nuevo!Nuevo! WebCasts en nuestro idioma WebCasts en nuestro idiomawww.microsoft.com/spanish/msdn/latam/videowww.microsoft.com/spanish/msdn/latam/video
Grupos de Usuarios, Panorama Box, theSpoke y Grupos de Usuarios, Panorama Box, theSpoke y mucho más en MSDN:mucho más en MSDN:
www.microsoft.com/spanish/msdn/argentinawww.microsoft.com/spanish/msdn/argentina
Operación NET PROTECTOROperación NET PROTECTORIniciativa para entrenarte en temas de seguridad en el desarrollo de Iniciativa para entrenarte en temas de seguridad en el desarrollo de softwaresoftwarehttp://www.microsoft.com/spanish/msdn/latam/netpro/http://www.microsoft.com/spanish/msdn/latam/netpro/
© 2005 Microsoft Corporation. All rights reserved.© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.SUMMARY.
Tu potencial. Nuestra pasión.Tu potencial. Nuestra pasión.
Muchas gracias por tu asistenciaMuchas gracias por tu asistencia