La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ADO.NET y SQL Server 2005 ADO.NET y SQL Server 2005 David Salgado MVP C# David Salgado MVP C#

Presentaciones similares


Presentación del tema: "ADO.NET y SQL Server 2005 ADO.NET y SQL Server 2005 David Salgado MVP C# David Salgado MVP C#"— Transcripción de la presentación:

1 ADO.NET y SQL Server 2005 ADO.NET y SQL Server 2005 David Salgado MVP C# David Salgado MVP C#

2 Agenda ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005 ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005

3 Agenda ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005 ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005

4 ADO.NET Clases, interfaces, estructuras y tipos que gestionan el acceso a los datos desde.NET (no sólo BBDD) Enfocado al desarrollo en n-capas con XML como pilar Los que vienen por defecto System.Data.OleDb System.Data.SqlClient System.Data.Odbc ( vs.net 2003 ) System.Data.Oracle ( vs.net 2003 ) Personalizados Clases, interfaces, estructuras y tipos que gestionan el acceso a los datos desde.NET (no sólo BBDD) Enfocado al desarrollo en n-capas con XML como pilar Los que vienen por defecto System.Data.OleDb System.Data.SqlClient System.Data.Odbc ( vs.net 2003 ) System.Data.Oracle ( vs.net 2003 ) Personalizados

5 Componentes de ADO.NET Consumidores de datos WinForm WebForm Otros DataSet Proveedores de datos DataAdapter Command DataReader Connection ADO.NET

6 Componentes de ADO.NET Proveedores de datos xxxConnection xxxCommand xxxDataReader xxxDataAdapter Modo Desconectado DataAdapter, DataSet Proveedores de datos xxxConnection xxxCommand xxxDataReader xxxDataAdapter Modo Desconectado DataAdapter, DataSet

7 DataSet Objeto estrella en ADO.NET Representa una caché de datos en memoria Contiene DataTables Lee y escribe datos y esquemas en XML Serializable Puede ser tipado o no tipado: El tipado se apoya en un esquema XML (.XSD) para generar la clase El tipado tiene ventajas: Conoce la estructura Objeto estrella en ADO.NET Representa una caché de datos en memoria Contiene DataTables Lee y escribe datos y esquemas en XML Serializable Puede ser tipado o no tipado: El tipado se apoya en un esquema XML (.XSD) para generar la clase El tipado tiene ventajas: Conoce la estructura

8 DataSet DataSet DataTable DataTable DataRow DataColumn Relations Constraints XML Schema

9 DataAdapter DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand TableMappings Base de datos DataSet

10 SqlConnectionODBCConnectionOleDbConnection…… Capa de acceso a BBDD Capa de negocio Clientes ( windows, web, smartclient … ) ADO.NET ( alternativas ) Capa de Acceso a BBDD XDataReader XConnection XCommand XDataAdapter DataSet

11

12 Modo Conectado Modo Desconectado Modo Conectado Modo Desconectado

13 ADO.NET ¿Como escoger? Que exista el modelo desconectado no quiere decir que lo usemos para todo El acceso conectado es más rápido Escenarios desconectados Navegación en una aplicación Windows Entornos móviles … Cómo decidir Arquitectura Patterns & Practices Building Blocks Que exista el modelo desconectado no quiere decir que lo usemos para todo El acceso conectado es más rápido Escenarios desconectados Navegación en una aplicación Windows Entornos móviles … Cómo decidir Arquitectura Patterns & Practices Building Blocks

14 Agenda ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005 ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005

15 Integración con XML XML como almacén de información Relación con el DataSet DataSet ds = new DataSet(); ds.ReadXml(archivo.xml); ds.Tables[0].Rows….. ds.WriteXml(archivo.xml); APIs de trabajo con XML DOM, SAX, XPath Vendrán: XPath2, XQuery XML como almacén de información Relación con el DataSet DataSet ds = new DataSet(); ds.ReadXml(archivo.xml); ds.Tables[0].Rows….. ds.WriteXml(archivo.xml); APIs de trabajo con XML DOM, SAX, XPath Vendrán: XPath2, XQuery

16 ADO.NET Integración con XML Capa Negocio Capa Datos Capa Presentación Web forms Negocio a Negocio DataSet DataSet Internet Intranet DataAdapter DataAdapter Xml Aplicación.Exe IE DataSet Windows forms

17 XML como almacén de información

18 Agenda ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005 ADO.NET Modo Conectado Modo Desconectado Integración con XML Motores de BBDD SQL Server 2005

19 Curioso… ¿Por qué no nos gustan las BBDD a los desarrolladores? Ejercicios 3FN SQL = Simple Query Language No optimizamos, no hacemos trucos,…. ¿Por qué no nos gustan las BBDD a los desarrolladores? Ejercicios 3FN SQL = Simple Query Language No optimizamos, no hacemos trucos,…. Eso es sólo académicamente

20 Motores de Base de Datos Orientados a archivo La base de datos se encuentra en un archivo Implicaciones Acceso desde el cliente Ineficiente en accesos simultáneos Para trabajar con aplicaciones distribuidas: Replicarlos en los equipos Directorios compartidos, FTPs… Ejemplos: Clipper, MS Access (.mdb) La base de datos se encuentra en un archivo Implicaciones Acceso desde el cliente Ineficiente en accesos simultáneos Para trabajar con aplicaciones distribuidas: Replicarlos en los equipos Directorios compartidos, FTPs… Ejemplos: Clipper, MS Access (.mdb)

21 Motores de Base de Datos Orientados a servidor Ya no trabajamos contra un archivo, trabajamos contra un servicio Preparado para accesos simultáneos Cliente / Servidor Ejemplos: SQL Server, Oracle, Informix, DB2, PostgreSQL… Ya no trabajamos contra un archivo, trabajamos contra un servicio Preparado para accesos simultáneos Cliente / Servidor Ejemplos: SQL Server, Oracle, Informix, DB2, PostgreSQL…

22 Motores de Base de Datos Mitos, Leyendas y el sexo de los ángeles Bases de Datos Orientadas a Objetos Motores de persistencia SI ObjectSpaces, Hibernate, … ¿Qué debemos hacer? ( básico ) Transact-SQL (T-SQL) Evitar select * from …; Evitar búsquedas like %tal Crear índices, pero no demasiados Se obtienen buenas sugerencias desde el DTA (Database Tuning Advisor ) Definir el esquema de BD en 3FN Claves primarias, externas, etc. Partir de un buen diseño y desnormalizar según necesidades del desarrollo Bases de Datos Orientadas a Objetos Motores de persistencia SI ObjectSpaces, Hibernate, … ¿Qué debemos hacer? ( básico ) Transact-SQL (T-SQL) Evitar select * from …; Evitar búsquedas like %tal Crear índices, pero no demasiados Se obtienen buenas sugerencias desde el DTA (Database Tuning Advisor ) Definir el esquema de BD en 3FN Claves primarias, externas, etc. Partir de un buen diseño y desnormalizar según necesidades del desarrollo

23 Motores de Base de Datos SQL Server 2000 Notification Services Notificaciones & Alertas Data Transformation Services ETL SQL Server Engine Relational Database Engine Reporting Services Informes Empresariales Herramientas de Gestión Herramientas de desarrollo Replication Services Replicación de Datos Analysis Services OLAP & Data Mining

24 Motores de Base de Datos Integración del CLR en el motor Soporte HTTP (Servicios Web endpoints) Nuevo tipo de datos: XML Mejoras en T-SQL Service Broker Nuevo modelo de seguridad Mejoras en administración … Integración del CLR en el motor Soporte HTTP (Servicios Web endpoints) Nuevo tipo de datos: XML Mejoras en T-SQL Service Broker Nuevo modelo de seguridad Mejoras en administración …

25 .NET Framework Common Language Runtime Integration User-defined Aggregates User-defined Data Types User-defined Functions SQL Server.NET Data Provider Extended Triggers Data Types Managed SQL Types New XML Datatype Varchar (MAX) Varbinary (MAX) SQL Server Engine New Message Service Broker HTTP Support (Native HTTP) Database Tuning Advisor Multiple Active Result Sets Persisted Computed Columns Snapshot Isolation Level Scale Up Partitioning VIA support NUMA support Database Failure and Redundancy Fail-over Clustering (up to 8 node) Enhanced Multi-instance Support Database Mirroring Database Snapshots XML XQUERY Support XML Data Manipulation Language FOR XML Enhancements XML Schema (XSD) Support MSXML 6.0 (Native).Net XML Framework Full-text Search Indexing of XML Datatype Database Maintenance Backup and Restore Enhancements Checksum Integrity Checks Dedicated Administrator Connection Dynamic AWE Fast Recovery Highly-available Upgrade Online Index Operations Online Restore Parallel DBCC Parallel Index Operations Management Tools New Management Studio MDX Query Editor Version Control Support XML/A SQLCMD Command Line Tool Performance Tuning Profiler Enhancements Profiling Analysis Services Exportable Showplan Exportable Deadlock Traces MDAC SNAC Microsoft Installer base setup Support for Active Directory Deployment SQL Client.NET Data Provider Server Cursor Support Asynch Security All Permissions Grantable Fine Grain Administration Rights Separation of Users and Schema Data encryption primitives Replication Auto-tuning Replication Agents Oracle Publication Improved Blob Change Tracking Replication Monitor OLAP and Data Mining Analysis Management Objects Windows Integrated Backup and Restore Web Service/XML for Analysis DTS and DM Integration New Data Mining Algorithms Auto Packaging and Deployment Data Transformation Services New Architecture (DTR + DTP) Complex Control Flows Control Flow Debugging For Each Enumerations Property Mappings Full Data Flow Designer Full DTS Control Flow Designer Graphical Presentation of Pkg Execution Immediate Mode and Project Mode Package (Advanced) Deployment Tools Custom Tasks and Transformations Reporting Services Multiple Output Formats Parameters (Static, Dynamic, Hierarchical) Bulk Delivery of Personalized Content Support Multiple Data Sources STS (Web Parts, Doc Libraries) Visual Design Tool Charting, Sorting, Filtering, Drill-Through Scheduling, Caching Complete Scripting Engine Scale Out architecture Open XML Report Definition Notification Services & SQL Server CE

26 Programación en el motor ¿Qué se puede programar en el motor? Consultas y modificaciones sobre los datos Disparadores (triggers) Agrupar funcionalidad en procedimientos almacenados Funciones definidas de usuario …. Es más, debe programarse el servidor XQuery – consulta sobre tipo de datos XML T-SQL – extensión a SQL NET integrado en el motor - lenguajes Cada cosa es para lo que es ¿Qué se puede programar en el motor? Consultas y modificaciones sobre los datos Disparadores (triggers) Agrupar funcionalidad en procedimientos almacenados Funciones definidas de usuario …. Es más, debe programarse el servidor XQuery – consulta sobre tipo de datos XML T-SQL – extensión a SQL NET integrado en el motor - lenguajes Cada cosa es para lo que es

27 Programación en el Motor Ejemplos T-SQL CREATE PROCEDURE nchar(5) AS SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE CustomerID ORDER BY OrderID -- Exec CustOrdersOrders ander CREATE PROCEDURE nchar(5) AS SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE CustomerID ORDER BY OrderID -- Exec CustOrdersOrders ander

28 Programación en el Motor Ejemplos T-SQL create proc varchar(255) = varchar(255) = int = 0 /* 0 => Just check project; 1 => get list of objs */ as set nocount on int int = 0 varchar(100) = 'SQLVersionControl.VCS_SQL' int = 0 int = 0 varchar(255) int = (select objectid from dbo.dtproperties where property = 'VCSProjectID') varchar(255) varchar(255) varchar(255) varchar(255) exec OUT exec OUT exec OUT exec OUT if = = null if = '') null if = = null if = null if is null) or is null) or is null) or is null) begin RAISERROR('Not Under Source Control',16,-1) return end = 1 begin /* Get List of Procs in the project */ OUT <> 0 GOTO E_OAError = @vchPassword <> 0 GOTO E_OAError = OUT <> 0 GOTO E_OAError create table #ObjectList (id int identity, vchObjectlist varchar(255)) = 'STUB' is not null begin = OUT <> 0 GOTO E_OAError if = '') = null if is not null) insert into #ObjectList (vchObjectlist ) end select vchObjectlist from #ObjectList order by id end CleanUp: return E_OAError: goto CleanUp create proc varchar(255) = varchar(255) = int = 0 /* 0 => Just check project; 1 => get list of objs */ as set nocount on int int = 0 varchar(100) = 'SQLVersionControl.VCS_SQL' int = 0 int = 0 varchar(255) int = (select objectid from dbo.dtproperties where property = 'VCSProjectID') varchar(255) varchar(255) varchar(255) varchar(255) exec OUT exec OUT exec OUT exec OUT if = = null if = '') null if = = null if = null if is null) or is null) or is null) or is null) begin RAISERROR('Not Under Source Control',16,-1) return end = 1 begin /* Get List of Procs in the project */ OUT <> 0 GOTO E_OAError = @vchPassword <> 0 GOTO E_OAError = OUT <> 0 GOTO E_OAError create table #ObjectList (id int identity, vchObjectlist varchar(255)) = 'STUB' is not null begin = OUT <> 0 GOTO E_OAError if = '') = null if is not null) insert into #ObjectList (vchObjectlist ) end select vchObjectlist from #ObjectList order by id end CleanUp: return E_OAError: goto CleanUp = 'STUB' is not null is not null begin begin = ster.dbo.sp_OAMethod = OUT <> 0 GOTO E_OAError <> 0 GOTO E_OAError if = '') if = '') = null if is not null) if is not null) insert into #ObjectList insert into #ObjectList (vchObjectlist ) end end

29 Prodecimiento almacenado desde ADO.NET

30 Programación en el Motor.NET Se desarrolla con Visual Studio 2005 Depuración, puntos de interrupción :O Los ensamblados se almacenan en SQL Server 2005 Permite extender el sistema Funciones escalares Tipos Triggers Agregados Procedimientos Acceso a datos Se desarrolla con Visual Studio 2005 Depuración, puntos de interrupción :O Los ensamblados se almacenan en SQL Server 2005 Permite extender el sistema Funciones escalares Tipos Triggers Agregados Procedimientos Acceso a datos SQL Engine Windows SQL OS CLR HostingLayer

31 Procedimiento almacenado Desarrollar, desplegar y depurar con Visual Studio 2005 Procedimiento almacenado Desarrollar, desplegar y depurar con Visual Studio 2005

32 Permission Sets

33 Programación en el Motor ¿Cuándo.NET? Procesos complejos Impuestos, descuentos, cálculos matemáticos Acceso a recursos externos Ficheros, sockets, Servicios web, … Proceso de imágenes Aplicaciones científicas Gestión de cadenas Depuración Localización ¿Cuándo.NET? Procesos complejos Impuestos, descuentos, cálculos matemáticos Acceso a recursos externos Ficheros, sockets, Servicios web, … Proceso de imágenes Aplicaciones científicas Gestión de cadenas Depuración Localización

34 Tecnología Utilizada SQL Server 2005 A la vieja usanza…. varchar(200) = 'Microsoft Corporation|SQL Server|2003|SQL-CLR| |11:32:00|Document|3.b.3' SELECT + '|', 0 + 1, + '|', 0 + 1) ), + '|', 0 + 1) ), + '|', + '|') + 1, + '|', + '|', + '|') + 1) - + '|') + 1) - + '|') - 1 ), + '|') - 1 ), + '|', + '|', + '|') + 1) + 1, + '|') + 1) + 1, + '|', + '|', + '|', + '|', + '|') + 1) + 1) - + '|') + 1) + 1) - + '|', + '|', + '|') + 1) - 1 ), + '|') + 1) - 1 ), + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1, + '|') + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) - + '|') + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|') + 1) + 1) - 1 ), + '|') + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 ) + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 ) varchar(200) = 'Microsoft Corporation|SQL Server|2003|SQL-CLR| |11:32:00|Document|3.b.3' SELECT + '|', 0 + 1, + '|', 0 + 1) ), + '|', 0 + 1) ), + '|', + '|') + 1, + '|', + '|', + '|') + 1) - + '|') + 1) - + '|') - 1 ), + '|') - 1 ), + '|', + '|', + '|') + 1) + 1, + '|') + 1) + 1, + '|', + '|', + '|', + '|', + '|') + 1) + 1) - + '|') + 1) + 1) - + '|', + '|', + '|') + 1) - 1 ), + '|') + 1) - 1 ), + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1, + '|') + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) - + '|') + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|') + 1) + 1) - 1 ), + '|') + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|', + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 ) + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 )

35 Tecnología Utilizada SQL Server 2005 public static void SplitString() { string s; string s; s = Microsoft s = Microsoft Corporation|SQLServer|2003|SQL-CLR| |22:00:00|Document|3.b.3; string[] miArray = s.Split(s, "|"); string[] miArray = s.Split(s, "|");} Ahora tenemos la posibilidad de…

36 Recursos [1] [2] News de Microsoft Grupo de usuarios de SqlServer [1] y [2] [1] [2] News de Microsoft Grupo de usuarios de SqlServer [1] y [2]

37 ¿ Preguntas ? ¿ Preguntas ? Gracias Gracias

38 © 2004, 2005 Microsoft Corporation. Todos los derechos reservados. Esta presentación tiene propósito informativo únicamente. Microsoft no ofrece ninguna garantía, expresa o implítica, en este documento.


Descargar ppt "ADO.NET y SQL Server 2005 ADO.NET y SQL Server 2005 David Salgado MVP C# David Salgado MVP C#"

Presentaciones similares


Anuncios Google